以下两个代码有什么区别?
Class A { private static A obj; static{ obj= new A();} }
和
Class A { private static A obj=new A(); }
答案 0 :(得分:0)
在上面提到的例子中,程序都在做同样的事情。所以你无法判断初始化静态对象和静态块之间的区别。在通过JVM加载类时,静态块仅被称为一次。静态块的目的是初始化静态变量并调用静态方法。记住一件事,在使用任何资源之前初始化,为此,这是一个在调用类的构造函数之前将被调用的选项。如果您需要在加载类时初始化静态变量,或者在加载类时调用方法来初始化某些东西,那么在这种情况下静态块将会有所帮助。以下是创建静态对象并在静态块中初始化它的示例。
private static List<String> arrList = new ArrayList<>();
static{
arrList.add("Hello");
arrList.add("World!!!");
}