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

解决方案 »

  1.   

    a和b这两个变量确实放在栈中,但是a是引用一个对象,所以a在栈中存放的是指向对象的地址的值。b在栈中存放就是10
      

  2.   

    a堆,b栈,ab存的都是内存地址
      

  3.   

    integer是个类,所以他的对象存放的是引用即地址,int b是个基本类型,里面就是存放着一个值。
      

  4.   

    Integer a /* 这个本身在栈里面,但是他里面的“值”是后面那个的地址 */ = 10; /* 这个在堆里面 */
    int b /* 这个本身也在栈里面,他里面的值就是纯粹的数值,而不是地址,就是10 */ = a; 
      

  5.   

    楼主搞清两个概念:
    栈内存:存放基本类型和对象的引用变量
    堆内存:存放由new创建的对象和数组。Integer a=10 说穿了就是 Integer a= new Integer(10);
    b = 10 ;就是一个基本类型
    所以a是在堆中,b在栈中。