class A
{
   private static int A=3;   //这个呢??
   int a = 222;       //这个呢??
   public void fun()
    {
      int a=111;         //这个分配在哪里???
      System.out.println("a="+a);
    }
}

解决方案 »

  1.   

    private static int A=3;   //这个呢??
    static有专门的区域负责存储,很多人称静态存储区,不过看jvm规范里没有提到静态存储区的概念。
     int a = 222;       //这个呢??
    这个是创建对象的时候在堆里创建的,比如A a=new A();新创建的这个对象中为int a分配了内存,并初始化为222
    int a=111;         //这个分配在哪里???
    这个是在栈里,方法调用的时候分配,方法执行完了就没有了。
      

  2.   

    heap and stack...Why you are so interesting in this? As far as I know, it's not so important while using Java to program most of time...
      

  3.   

      个人觉得把java程序在内存中的分布了解下还是不错了~~这样有助于你理解程序!一楼的朋友基本给你解释清楚了~~呵呵
      

  4.   

    java把基本类型的变量存在堆栈里
      

  5.   

    private static int A=3; 在哪里?
    在堆里.
    在堆里的A.class这个对象创建时的字段.对于Class类来说,它的实例A.class中有一个非静态字段int A.
    因为它是Class类的一个实例的字段,所以被该Class类的实例A.class所表示的类的实例共同引用,对于A.class所表示的类的
    实例来说它们是静态的.
      

  6.   

    heap and stack... Why you are so interesting in this? As far as I know, it's not so important while using Java to program most of time...========================================================
    个人觉得把java程序在内存中的分布了解下还是不错了~~这样有助于你理解程序!一楼的朋友基本给你解释清楚了~~呵呵========================================================这对理解程序有什么用?毫无用处。
    真正有用的是在受限环境中,比如手机、单片机等设备上,其堆的大小和栈的大小是不同的,有的设备堆比较大,而栈很小(只有几K),所以需要合理把内存分配到堆或者栈上,避免内存溢出。
      

  7.   

    胡说八道!
    给定的环境,如果不知道程序运行时对当前系统资源的占用,最多只能算一个fans.永远成不了程序员.
    除了嵌入式应用,J2EE应用难道物理资源就是无限的?
      

  8.   


    请注意一下文明用语。
    在java里堆和栈的调用,与当前系统资源的占用是一回事吗?谁不知道要节省内存?写J2EE的时候,谁会去管这个内存在放在堆里还只栈里?
    另外,我怎么觉得这个是fans才关心的问题!