静态初始化块

问题:

据我所知,如果静态字段不能在一行中完成,则使用“静态初始化块”来设置静态字段的值。
但是我不明白为什么我们需要一个特殊的块。例如,我们将一个字段声明为静态(没有赋值)。然后写几行代码,生成并赋值给上述声明的静态字段。
为什么我们需要这样一条特殊的行:static {...}

回答:

non-static block:

{
    // Do Something...
}

获取被称为每次类的一个实例被构造。当类本身被初始化时,static block只被称为一旦,无论你创建了多少个类型的对象。
例:

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

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Static Initialization Blocks

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

3 + 7 =