标题: Integer对象包装类 [打印本页] 作者: hel 时间: 2013-11-17 14:05 标题: Integer对象包装类 class IntegerDemo2{
public static void main(String[] args){
//Integer x = new Integer(4);
Integer x = 4; //自动装箱,4是一个对象,相当于 new Integer(4)
x = x + 2; //x+2: x进行了自动拆箱,变成了int类型,和2进行加法运算,再将和进行装箱赋给x。
//自动拆箱:x.intValue();
}
public static void sop(Object obj){
System.out.println(obj);
}
}
上面代码中,
Integer x = 4;
x = x + 2; 之后,内存中是不是存在了两个Integer对象?
因为,x+2 后是不是多了个值为6的Integer对象? 然后把这个新对象的地址值赋给了x,原来值为4的Integer对象就没被引用了?
x = x + 2; //x+2: x进行了自动拆箱,变成了int类型,和2进行加法运算,再将和进行装箱赋给x。
//自动拆箱:x.intValue();
}
public static void sop(Object obj){
System.out.println(obj);
}
}
复制代码
根据开头的描述,执行此句时Integer x = 4;先将4包装成Integer类型,然后将它放入缓冲池。此时堆内存中有一个对象 4
x = x + 2; 自动拆箱,运算,将运算结果6自动装箱,装箱后也将6放入缓冲池。这个过程中,先创建一个对象2,然后运算,重新创建一个对象6。最后x断开指向4的引用,转而指向6。