自动装箱池
在Integer类的内部提供了自动装箱池技术,将-128到127之间的整数已经装箱完毕,当程序中使用该范围之间的整数时,无需装箱直接取用自动装箱池中的对象即可,从而提高效率。
预测以下代码的运行结果
public class IntegerTest {
public static void main(String[] args) {
Integer i1=128;//自动生成Integer对象
Integer i2=128;
Integer i3=new Integer(128);//新建对象
Integer i4=new Integer(128);
System.out.println(i1==i2);//比较地址
System.out.println(i1.equals(i2));//比较内容
System.out.println(i3==i4);//比较地址
System.out.println(i3.equals(i4));//比较值
}
}
结果为

当将128改为127时
public class IntegerTest {
public static void main(String[] args) {
Integer i1=127;//自动生成Integer对象
Integer i2=127;
Integer i3=new Integer(127);//新建对象
Integer i4=new Integer(127);
System.out.println(i1==i2);//比较地址 true
System.out.println(i1.equals(i2));//比较内容 true
System.out.println(i3==i4);//比较地址 false
System.out.println(i3.equals(i4));//比较值 true
}
}
结果如下:

当执行Integer i1=127时,将装箱池内值为127的对象的地址赋给了i1,执行Integer i2=127时,也指向了同一个对象,导致对i1、i2比较时,由地址相同导致结果为true。
本文探讨了Java中Integer类的自动装箱池特性,解释了为何在-128到127之间时,Integer对象可以共享引用。通过代码示例展示了当Integer值为128和127时,比较操作的不同结果,揭示了对象创建与池化的影响。
407

被折叠的 条评论
为什么被折叠?



