当全局变量被声明并用值初始化时,那么在创建类的对象时,全局变量是否会再次被初始化并获得新的内存?
class A{
int a = 10;
}
这将被存储在内存地址 a
中值(value)10
。但是当我创建A类的对象时,a会再次初始化吗?
class A{
int a = 10;
public static void main(String args[]){
A a = new A();
}
最佳答案
你所说的并不完全是内存分配的工作原理。
class A{
int a = 10;
}
在上面的示例中,您创建了一个类。类中的成员仅在创建其对象后才创建并分配其值,除非将成员声明为静态。因此,在您发布的第二个示例中,在构造 A 类的对象“a”之后,变量“a”被赋予值 10。如果您仍然不明白,请运行以下代码:
class A{
int a = 10;
public static void main(String args[]){
A a = new A();
A b = new A();
b.a += 10;
System.out.println(a.a);
System.out.println(b.a);
}
}
如果变量a在创建对象之前被赋值,那么当对象b修改它时,打印的变量就会改变。但如果你运行这个,输出将是:
10
20
这意味着变量仅在对象创建后才分配。我希望这能消除您的疑虑。另外还有一个提示,静态变量无法修改。
关于Java - 当声明全局变量并用值初始化时,对象创建时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58345111/