拆箱和装箱:
装箱:基本数据类型转换为包装类,int->Integer;
Integer a = 12;
拆箱:包装类类型转换为基本数据类型,int ->Integer;
Integer a = 12;
int b = a;
特点:
缓存:1、如果包装类类型为Byte、Short、Integer、Long, 而且它们的数值范围为-128~127时,则它们的地址会被缓存起来;
public static void main(String[] args) {
Integer a = 127;
Integer b = 127;
System.out.println(a==b);
}
输出为:true;
public static void main(String[] args) {
Integer a = 128;
Integer b = 128;
System.out.println(a==b);
}
输出为:false;
2、Float、Double为小数有近似无穷多个,故不可缓存;
3、Character 缓存的数值范围为 0~127;
4、Boolean也缓存;
public static void main(String[] args) {
Integer a = new Integer(-128);
Integer aa = new Integer(-128);
System.out.println(a==aa);
}
输出为:
false;
//因为new了一个对象所以地址不同,其实包装类在数值范围内与String类似;
2、自动拆箱:当有基本数据类型与包装类类型比较时,包装类类型会自动拆箱成为基本数据类型再进行比较;
public static void main(String[] args) {
int a = 127;
Integer aa = 127;
Integer aaa = new Integer(127);
System.out.println(a==aa);
System.out.println(a==aaa);
System.out.println(aa==aaa);
}
输出为:
true;
true;
false;