㈠ java中成员变量分配在哪个空间
变量分为成员变量和局部变量;
成员变量又分为实例变量和静态变量;
实例变量在对象创建的时候分配内存空间,存储在堆内存中;
静态变量在类加载的时候分配内存空间,存储在元空间;
局部变量在方法执行时分配内存空间,存储在栈内存中。
㈡ java程序是在编译的时候分配空间的吗,如果不是那程序在什么时候给变量分配内存空间
编译的时候是不会分配空间的,只是将java代码编译成字节码。是在运行这段代码的时候才会分配。javac XX.java是编译代码,java XX时候是运行代码。举个简单的例子:
class Cs{
int a=1;
public void print(){
System.out.print("a="+a);
}
public static void main(String args[]){
Cs c=new Cs();
c.print();
}}
当你执行到Cs c=new Cs();的时候会初始化变量。将引用变量c放入栈内存,将变量a=1放入堆内存。