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

how static variable get value of object at the time of class loading?

由于静态变量在 class 加载时获得内存,这里我通过创建新的 A() 来分配它,它将在加载 class 后的 运行 时间分配].jvm如何在class加载时给new A()赋值?

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

这里没有什么奇怪的。加载 class,然后创建 new A() 并将其分配给 objA。它实际上是如何在内部发生的并不真正相关,并且可能因 JVM 而异。

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

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