日期:2014-05-18  浏览次数:20577 次

Integer自动拆箱问题
如下代码:
Integer a=10;
int b=a;
变量 a,b都在栈中这应该没什么问题,但a中存放的是什么,是地址,还是10
b中呢,存放的是地址还是10
java 拆箱

------解决方案--------------------
a和b这两个变量确实放在栈中,但是a是引用一个对象,所以a在栈中存放的是指向对象的地址的值。b在栈中存放就是10
------解决方案--------------------
integer是个类,所以他的对象存放的是引用即地址,int b是个基本类型,里面就是存放着一个值。
------解决方案--------------------
Integer a /* 这个本身在栈里面,但是他里面的“值”是后面那个的地址 */ = 10; /* 这个在堆里面 */
int b /* 这个本身也在栈里面,他里面的值就是纯粹的数值,而不是地址,就是10 */ = a;