请问:
看下面这个程序:
class A

  public int abc(int i,int j)
  { 
     return (i+j);
  }
  public static void main(String[]args)
  { 
     A a = new a();
     System.out.println(a.abc(2,3));       
  }
}
在这个程序执行a.abc(2,3)的时候 程序会跳转到public int abc(int i,int j)方法 把实参(2,3)赋给形参(int i ,int j)
那么 
1,是不是这时才给i和j分配内存呢 而刚开始创建对象a的时候并没有给i和j分配内存呢 
2,是不是创建对象的时候只是给构造函数中的成员变量,数组分配内存空间呢 其他的成员在需要用的时候才分配内存空间 而对于静态变量(包括静态方法中的变量)在装载类的时候就分配内存空间了

解决方案 »

  1.   

    1.创建对象a的时候只给对象a分配了“栈引用”,而没有给a的成员i和j配“堆内存”
    2.同上;“而对于静态变量(包括静态方法中的变量)在装载类的时候就分配内存空间了”这句话是正确的
      

  2.   

    1.对于i和j都是局部变量,他们的作用域也只在abc()这里,但函数被调用时在会被初始化和分配内存,
    2。类中的成员变量是在你new一个新的对象时在会分配内存,而对于静态变量是在你加载该类的时候就已经分配了内存,对于静态方法则是在你调用到是才会被加载
      

  3.   

    我印象中的常用类型(如int)的值不是在堆内存里,好象是一个叫什么data....的内存空间里.
      

  4.   

    我记得new对象是不是才在堆里?
    当声明的时候不分配空间,比如A a;
    当new的时候分配,比如a = new A();
    是不是这样?
      

  5.   

    声明时不分配
    new时才分配