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

时间:2016-06-03 06:06:57

标签: java static-block

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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