类的方法中的局部变量是建立在栈里还是堆里?如:
class Test
{
    public void fun()
    {
      int a;   //这个a建立在栈里还是堆里?   
    }
}

解决方案 »

  1.   

    和存储有关的只是形成对象的时候,也就是new的时候 
    也就是说new的时候,new的是值类型,这个值类型就放在栈里 
    如果new的是引用类型,那么放在栈里的就是指针,具体信息在堆里 
      

  2.   

    class Test 

        public void fun() 
        { 
          int a;  //a局部变量,所以建在栈里 
        } 

    Java把内存划分成两种:一种是栈内存,一种是堆内存。 
    在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 
    当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 
    堆内存用来存放由new创建的对象和数组。 
    在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 
    在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。 
    引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象