在静态块内部初始化静态对象和在外部初始化静态对象有什么区别



下面两个代码有什么区别?

Class A {  private static A obj;  static{ obj= new A();}  }

Class A {  private static A obj=new A();    }

在上面提到的例子中,两个程序都在做同样的事情。所以您无法判断初始化静态对象和静态块之间的区别。JVM加载类时,静态块将只调用一次。静态块的目的是初始化静态变量并调用静态方法。记住一件事,在使用任何资源之前初始化,为此,这是一个选项,甚至在调用类的构造函数之前都会调用它。如果您需要在加载类时初始化静态变量,或者在加载类的时候调用方法来初始化某些东西,那么在这种情况下,静态块将很有帮助。下面是创建静态对象并在静态块中初始化它的示例。

private static List<String> arrList = new ArrayList<>();
static{
arrList.add("Hello");
arrList.add("World!!!");
}

最新更新