1.基本数据类型:byte、short、int、long、float、double、char、boolean
包装类:Byte、Short、Integer、Long、Float、Double、Character、Boolean
2.自动装箱:将基本数据类型转换成对应的包装类。
自动拆箱:将包装类自动转换成对应的基本数据类型。
Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1==i2);
这个打印的值是true;
Integer i1 = 128;
Integer i2 = 128;
System.out.println(i1==i2);
这个打印的值是false;
为什么?这个和Integer类中的缓存机制有关。当需要自动装箱时,如果数字在-128到127之间,则会直接使用缓存中的对象,而不是创建一个新的对象。
3.缓存
IntegerCache是Integer类中的一个内部类。
public static Integer valueOf(int i) {
return i >= -128 && i <= Integer.IntegerCache.high ? Integer.IntegerCache.cache[i +
128] : new Integer(i);
}