关于静态成员变量的问题

dfe*_*r88 2 java static static-members

在下面的代码中,我假设成员变量mBar只在第一次构造Foo对象时被实例化......并且该mBar实例化将与所有未来的Foo对象共享,但Bar()不会再次调用构造函数.这准确吗?

public class Foo {
  private static Bar mBar = new Bar();

  public Foo() {

  }
Run Code Online (Sandbox Code Playgroud)

Jar*_*iuk 6

实际上可以在创建第一个Foo之前​​构造对象.它将在Classloader在内存中加载Foo.class时执行.这在任何时候都可以发生....特别是当你加载其他使用Foo类的类时,或者当你调用类的静态方法时....