1、数据类型分类

  • Java 语言是一种强类型语言。通俗点说就是,在 Java 中存储的数据都是有类型的,而且必须在编译时就确定其类型
  • 在 Java 的领域里,基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址。说白了,基本数据类型变量里存储的是直接放在抽屉里的东西,而引用数据类型变量里存储的是这个抽屉的钥匙,钥匙和抽屉一一对应

image.png

2、基本数据类型

  • 字节:Byte,计算机文件大小的基本计算单位;
  • 位:Bit,二进制的一位0或1
  • 1KB = 1024 Byte = 1024 * 8 Bit

    布尔型

  • boolean:布尔型,只能取 true false

  • JVM规范中,boolean变量作为int处理,也就是4字节;boolean数组当做byte数组处理,占用1Byte

    1. boolean aa = true;
    2. boolean bb = false;
    3. System.out.println(aa);
    4. System.out.println(bb);

    char

  • char:字符型

  • 2Byte:范围0~2^16-1 (65535)无负数
  • ASCII:American Standard Code Information Interchange美国标准信息交换码128个
  • Unicode:万国码,包含了世界上其它国家的语言字符,java采用的就是unicode码 ```
    1. // A
    2. char a = 65;
    3. // A
    4. char b = 'A';
  1. <a name="su6Ts"></a>
  2. #### byte short int long
  3. - 整型默认为int
  4. - byte:字节型(1Byte),范围-128(1000 0000)~127(0111 1111)
  5. - short:短整形(2Byte), -2^15~2^15-1
  6. - int:整形(4Byte),-2^31~2^31-1
  7. - long:长整形(8Byte),-2^63~2^63-1
  1. byte dd = 125;
  2. System.out.println(dd);
  3. short ee = 178;
  4. System.out.println(ee);
  5. int ff = 1122;
  6. System.out.println(ff);
  7. long gg = 11L;
  8. System.out.println(gg);
  1. <a name="fUgnW"></a>
  2. #### float double
  3. - 小数的默认类型为double
  4. - float:单精度小数(4Byte)
  5. - double:双精度小数(8Byte)
  1. float hh = 1.2F;
  2. System.out.println(hh);
  3. double jj = 1.34D;
  4. System.out.println(jj);
  1. <a name="vrs8r"></a>
  2. ### 3、基本类型转换
  3. - 整数默认int,小数默认double
  4. - 容量排序byte > short > int > float > long > double;boolean不能转换
  5. - 自动类型转换:容量小的类型自动转换成容量大的类型
  6. - 强制类型转换:容量大的类型转换成容量小的类型,需加强制转换符,会造成精度降低或数据溢出
  1. /**
  2. * 自动类型转换:容量小的类型自动转换成容量大的类型
  3. */
  4. long ff = 100;
  5. /**
  6. * 强制类型转换:容量大的类型转换成容量小的类型
  7. */
  8. float aa = 1.2;//报错
  9. float bb = 1.2f;
  10. float cc = (float) 1.2;
  1. <a name="gU1hD"></a>
  2. #### byte特例
  3. - byte相关强转
  4. - 整型变量若在byte类型的保存范围内,可以直接赋给byte变量,不用强转;
  5. - 整型变量若不在byte类型的保存范围内,必须强转;
  1. // byte 取值范围 -128~127
  2. // int 赋值给byte,应该强转,但是在byte范围内则不需要强转
  3. byte a = 127;
  4. // 不在范围内需要强转.最终的值是-128
  5. // int 128 的二进制 00000000 00000000 00000000 10000000
  6. // 强转byte 1000 000,反码就是 1111 1111 原码1000 000就是-128
  7. byte b = (byte) 128;
  8. System.out.println(b);
  1. <a name="tndLB"></a>
  2. #### char特例
  3. - char 类型与int类型互相转换
  1. int aa = 65;
  2. int bb = 'A';
  3. char cc = 'A';
  4. char dd = 65;

```