| 名称 | 占用字节Bytes | 位数bits | 默认值 |
|---|---|---|---|
| byte | 1字节 | 8 | 0 |
| short | 2字节 | 16 | 0 |
| int | 4字节 | 32 | 0 |
| long | 8字节 | 64 | 0 |
| float | 4字节 | 32 | 0.0F |
| double | 8字节 | 64 | 0.0 |
| boolean | - | 1 | false |
| char | 2字节 | 16 | ‘u0000’ 空字符 |
- 1个字节 = 8bits
- 规则:由小字节向大字节自动转换
- byte->short(char)->int->long->float->double
int a = 10; long b = a; float c = a; System.out.println(a); // 10 System.out.println(b); // 10 System.out.println(c); // 10.0
由大向小转换则需要强转
float a = 10.0f; int b = (int) a; System.out.println(a); // 10.0 System.out.println(b); // 10封装类
| 名称 | 封装类 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
| char | Character |
-
拆箱
Integer a = 10; int b = a;
-
装箱
int a = 10; Integer b = a;
基本数据类型和封装类的值可以相互传递。
Integer和int的比较int a = 10; Integer b = 10; System.out.println(a == b);//true
- Integer会拆箱,转为int值与int进行比较
Integer i1 = 10; Integer i2 = 10; System.out.println(i1 == i2); // true System.out.println(i1.equals(i2)); // true Integer i3 = new Integer(10); System.out.println(i1 == i3); // false System.out.println(i1.equals(i3)); // true
- Integer的值-128<= x<=127时,直接缓存在IntegerCache中,大于这个范围的时候,直接new Integer来创建Integer对象。
Integer i1 = 127; Integer i2 = 127; Integer i3 = 128; System.out.println(i1 == i2); // true System.out.println(i1 == i3); // false
- 在IntegerCache缓存段时,获取的是同一个对象,所以结果为true;值超过127时则会创建新的对象,两个Integer的引用地址不一样结果为false
Integer i3 = 128; Integer i4 = 128; System.out.println(i3 == i4); // false System.out.println(i3.equals(i4)); // true
- 所以值超过128应该用equals()进行比较



