Java自动装箱解箱问题int和Integer类型==比较问题

Java在5.0开始,基本类型和封装类型之间有了自动的转换。

Integer i1=1;//1转变为new Integer(1),叫自动装箱

Integer i2=1;

int i3=i1+i2;//i1 i2自动转化为int类型,叫自动解箱

System.out.println(i1==i2);//true

这里我们可以看到,Integer的构造方法可以不用了。
 
自动装箱时,-128--127有缓冲池,是同一个对象,如果不在这个范围内,将会新建对象,所以对象会不同。

Integer i4=128;
Integer i5=128;
System.out.println(i4==i5);//false

用==比较时,如果两边一个int一个Integer,自动解箱后再比较。

int i6=128;
System.out.println(i4==i6);//true

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/f5afabb18a331006502ee9313ebd9d97.html