自动拆装箱
jdk1.5新特性
public static void main(String[] args) {
Integer a = new Integer(5);
Integer a1 = 5;
a1 += 10;
System.out.println(a1);
}
正常来说 给a1赋值就需要利用第一行代码,用构造方法,因为 a1是引用类型,其数据放在堆中,但为什么第二行代码不报错呢,就是因为自动装箱
下面来看反编译结果
public static void main(String args[])
{
Integer a = new Integer(5);
//这里进行了自动装箱,将基本数据类型(5)变成了引用类型
Integer a1 = Integer.valueOf(5);
//这里先自动拆箱,把a1变成基本数据类型,然后进行计算,完成后再把结果转为引用类型
a1 = Integer.valueOf(a1.intValue() + 10);
System.out.println(a1);
}
一个问题
如果 a1 为null时,进行计算就会报错(空指针异常)
所以:先判断一下
if(a1 != null){
a1 += 10;
}