据我了解,如果不能在一行中完成,则“静态初始化块”用于设置静态字段的值。
但我不明白为什么我们需要一个特殊的块。例如,我们将一个字段声明为静态的(没有赋值)。然后编写几行代码,为上面声明的静态字段生成并赋值。
为什么我们需要将这些行放在一个特殊的块中,例如: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