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


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

  1. Integer i1=1;//1转变为new Integer(1),叫自动装箱
  2. Integer i2=1;
  3. int i3=i1+i2;//i1 i2自动转化为int类型,叫自动解箱
  4. 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

相关内容