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有缓冲池,是同一个对象,如果不在这个范围内,将会新建对象,所以对象会不同。

 

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

 

 

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

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