Java是一种强类型语言,每个变量都必须声明其数据类型。
Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
image.png
PS:巧妙记忆:除了基本数据类型以外的所有类型都属于引用数据类型

整数类型

image.png

比如:byte的右侧表数范围127怎么算出来的?
byte: 1字节 = 8位
二进制:01111111
12^6 + 12^5 + 12^4 + 12^3 + 12^2 + 12^1 + 1*2^0
= 64 + 32 + 16 +8 +4 + 2 +1
= 127

  1. public class TestVar05{
  2. public static void main(String[] args){
  3. //定义整数类型的变量:
  4. //给变量赋值的时候,值可以为不同进制的:
  5. int num1 = 12 ;//默认情况下赋值就是十进制的情况
  6. System.out.println(num1);
  7. int num2 = 012;//前面加上0,这个值就是八进制的
  8. System.out.println(num2);
  9. int num3 = 0x12;//前面加上0x或者0X,这个值就是十六进制的
  10. System.out.println(num3);
  11. int num4 = 0b10;//前面加上0b或者0B,这个值就是二进制的
  12. System.out.println(num4);
  13. //定义byte类型的变量:
  14. byte b = 126;//定义了一个byte类型的变量,名字叫b,赋值为12
  15. System.out.println(b);
  16. //注意:超范围的赋值会报错。
  17. short s = 30000;
  18. System.out.println(s);
  19. int i = 1234;
  20. System.out.println(i);
  21. //整数类型默认就是int类型的,所以12345678910是一个int类型的数,对于int类型来说,它超出范围了
  22. //要想把一个数给long类型变量,那么后面加上L(推荐)或者l就可以了
  23. long num5 = 12345678910L;
  24. System.out.println(num5);
  25. //注意:只有这个数超出int类型的范围了后面才需要加上L,否则无需加L也可以赋值给long类型:
  26. long num6 = 12;
  27. System.out.println(num6);
  28. }
  29. }

浮点类型

  1. 十进制数形式,例如:

3.14 314.0 0.314

  1. 科学记数法形式,如

314e2 314E2 (E的大小写没有区分) 314E-2
double f = 314e2; //31410^2—>31400.0
double f2 = 314e-2; //314
10^(-2)—>3.14

float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。
而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。
float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。
也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
image.png

  1. public class TestVar06{
  2. public static void main(String[] args){
  3. //浮点类型的常量有两种形式:
  4. //十进制形式:
  5. double num1 = 3.14;
  6. System.out.println(num1);
  7. //科学计数法形式:
  8. double num2 = 314E-2;
  9. System.out.println(num2);
  10. //浮点类型的变量:
  11. //注意:浮点型默认是double类型的,要想将一个double类型的数赋给float类型,必须后面加上F或者f
  12. float f1 = 3.14234567898623F;
  13. System.out.println(f1);
  14. //注意:double类型后面可以加D或者d,但是一般我们都省略不写
  15. double d1 = 3.14234567898623D;
  16. System.out.println(d1);
  17. //注意:我们最好不要进行浮点类型的比较:
  18. float f2 = 0.3F;
  19. double d2 = 0.3;
  20. System.out.println(f2==d2);
  21. /*
  22. 区别:
  23. = 赋值运算: 将等号右侧的值赋给等号左侧
  24. == 判断==左右两侧的值是否相等 :结果要么相等 要么不相等
  25. ==运算符的结果就是要么是true,要么是false
  26. */
  27. }
  28. }