静态变量如何在类加载时获取对象的值?

时间:2015-04-09 10:50:02

标签: java jvm

因为静态变量在类加载时获得了内存,所以我在这里通过创建新的A()来分配它,它将在加载类之后的运行时分配。 jvm如何赋值new A()在课堂加载时?

public class A{
static A objA =new A();
public static void main(String x[]){}
}

2 个答案:

答案 0 :(得分:2)

这里没什么奇怪的。加载该类,然后创建new A()并将其分配给objA。内部实际发生的方式并不真正相关,并且可能因JVM而异。

答案 1 :(得分:2)

当加载类时,JVM调用名为<clinit>()V的类中的方法。此方法设置所有初始值,在您的情况下,它设置静态字段。

它可以在调用方法时创建实例,但它确实意味着您不能在构造函数中假设已经设置了所有静态字段。