装箱:用于在垃圾回收堆中存储值类型,装箱是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。
通过调用包装器类的valueOf方法实现的。
例:int 装箱的时候会自动调用Integer的valueOf(int)方法
拆箱:从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。
通过调用包装器类的xxx.value方法实现的,xxx代表对应的基本数据类型。
例:Integer拆箱的时候会自动调用Integer的intValue方法。
注意:
Integer integer100=null;
int int100=integer100;
解析:能通过编译但运行时会抛出空指针异常。integer100为Integer类型的对象,可以指向null,但第二行就会对integer100进行拆箱,也就是对一个null对象执行intValue()方法。所以,在拆箱的过程中特别注意封装类对象是否为空。
面试题:
Integer a=128;
Integer b=128;
System.out.println(a==b);
解析:超过Integer的范围,创建两个新对象,结果返回false.