package cn.zyj11.review;
public class AutoBox {
public static void main(String[] args) {
//自动封箱解箱只在必要的时候才进行。还有其它选择就用其它的
Integer iObj=3;// 自动装箱
System.out.println(iObj+12);//自动拆箱 。iObj自动拆成int数据类型进行加发
///
/* 基本Boolean/Byte/Integer(数值范围:-128至127)数据类型的对象缓存:
基本整数在包装时,他在在一个字节内(即-128~127)就把他缓存在池里。这就是享元设计模式(flyweight)。
享元模式(flyweight):有很多小的对象,它们有很多相同的属性,把这些相同的属性变为同一个对象,称为内部状态。 把那些不同的属性变为方法的参数,称为外部状态。
*/
Integer i1=127;
Integer i2=127;
System.out.println(i1==i2);//true
Integer i3=128;
Integer i4=128;
System.out.println(i3==i4);//false //这块不相等,因为是对象
Integer i5=Integer.valueOf(127);
Integer i6=Integer.valueOf(127);
System.out.println(i5==i6);//true
Integer i7=Integer.valueOf(128);
Integer i8=Integer.valueOf(128);
System.out.println(i7==i8);//false //这块不相等,因为是对象
//
Integer i9=new Integer(2);
Integer i10=new Integer(2);
System.out.println(i9==i10);//false
}
}
简单类型和封装类型之间的差别:
封装类可以等于null ,避免数字得0时的二义性。
Integer i=null;
int ii=i; 会抛出NullException 异常。
相当于 int ii=i.intValue();