装箱:把基本数据类型转换为对应的包装类类型
拆箱:把包装类类型转换为对应的基本数据类型
注意:在使用包装类类型时,最好先判断左边的引用类型是否为null。建议只要是对象,在使用前就必须进行不为null的操作
装箱和拆箱的练习
xxxxxxxxxx
package ch12;
public class a_11_1测试 {
public static void main(String[] args) {
//装箱:把基本数据类型转换为对应的包装类类型
Integer i = Integer.valueOf(100); //即把100这个基本类型,转换为包装类类型i
//自动装箱
Integer ii1 = 100;
Integer ii2 = 100;
//上面那行虽然左边是引用类型,右边是基本类型,不能直接赋值。但是由于这是自动装箱,所以这步其实包含了Integer.valueOf(100),只是我们看不到
//------------------------------------------------------------------------------------------------------------------
//拆箱:把包装类类型转换为对应的基本数据类型
//思考:如何ii1+100呢。注意ii1是引用类型,100是基本类型。如下
ii1 = ii1.intValue() + 200;//先把ii1转为int类型,再去加200,最后的结果就是int类型即基本类型。再把整体赋值给Integer类型的ii1
//上面那行,ii1.intValue()是拆箱。上面那行,整体赋值是自动装箱
System.out.println(ii1);//值是300则正确
//自动拆箱
ii2 += 200; //内部隐含了自动拆箱即ii2.intValue()。还隐含了自动装箱
System.out.println(ii2);//值是300则正确
//------------------------------------------------------------------------------------------------------------------
//拓展。当初始值为空的情况
Integer ii3 = null;
//ii3 += 300; //自己解开,这行报错的原因如下
//原因:ii3去调用intValue()时出的问题,因为ii3的值是空值所以造成了空指针。所以我们在使用的时候需要加一个判断。如下
Integer ii4 = null;
if(ii4 != null){ //即ii4不能是空值,不然会空指针
ii4 += 300; //检测到空值就不会执行这行,避免了空指针的情况
}
}
}