java的基本数据类型:
数据类型 | 位数 | 说明 |
byte | 8bit | 包装类:Byte 缓存池范围:所有byte的值 |
char | 2byte | 包装类:Character 缓存池范围:\u0000 ~ \u007F |
short | 2byte | 包装类:Short 缓存池范围: -128 ~ 127 |
int | 4byte | 包装类:Integer; Integer默认缓存池范围-128~127 (可以通过jvm设置大小) -XX:AutoBoxCacheMax=<size> |
float | 4byte | |
double | 8byte | |
long | 8byte | |
boolean | ~ | 只有两个值,可以使用1bit实现,具体长度没有说明。boolean类型在编译期转换成int,boolean数组,在编译期转换成byte数组 缓存池范围:true, false |
数字类型转换:
高精度-》低精度转换,不能使用隐式转换
低精度-》高精度 可以隐式转换
6中数字类型精度高低顺序:double > long > float > int > short > byte
自动拆装箱:
对于封装类型,由于缓存池的存在,对象在不同的值范围时可能会存在不同的地址结果。
例:
Integer a1 = new Integer(12);
Integer a2 = new Integer(12);
System.out.println(a1 == a2);//false,直接从对内存创建对象,不走缓存池
Integer m1 = Integer.valueOf(12);
Integer m2 = Integer.valueOf(12);
System.out.println(m1 == m2);//true
Integer n1 = Integer.valueOf(128);
Integer n2 = Integer.valueOf(128);
System.out.println(n1 == n2);//false, -128~127在缓存池,128不在默认缓存池