据我了解,“静态初始化块”用于设置静态字段的值(如果无法在一行中完成的话)。
但是我不明白为什么我们需要为此设置一个特殊的块。例如,我们将字段声明为静态(无值分配)。然后编写几行代码,生成并为上面声明的静态字段分配一个值。
为什么我们需要在这样一个特殊的块这样的行:static {...}?
static {...}
在非静态块:
{ // Do Something... }
每次构造类的实例时被调用。在静态块只被调用一次,当类本身初始化,无论该类型的有多少对象创建。
例:
public class Test { static{ System.out.println("Static"); } { System.out.println("Non-static block"); } public static void main(String[] args) { Test t = new Test(); Test t2 = new Test(); } }
打印:
Static Non-static block Non-static block