松散的代码块

时间:2014-01-04 03:59:29

标签: java

当我尝试运行这段代码时,会打印“x y c g”。我知道x优先于y,因为它是静态的,构造函数(c)在方法(g)之前打印,但是将两行放在它们自己的块中的目的究竟是什么,这有助于实现什么?

public class Sequence {
    Sequence() { System.out.print("c "); }
    { System.out.print("y ");}

    public static void main(String[] args) {
        new Sequence().go();
    }

    void go() { System.out.print("g "); }
    static { System.out.print("x "); }

}

1 个答案:

答案 0 :(得分:0)

您的问题与此问题密切相关,但不完全相同:Why java Instance initializers?

当您第一次引用类时,它会被加载并且静态组件在静态初始化程序中初始化。这些块对于设置集合或加载本机代码非常有用。

实例初始值设定项是一些与静态初始值设定项类似的代码,除了它在调用构造函数之前对每个实例进行操作。似乎在Java中没有绝对需要它,因为它只能放在构造函数的开头。

相关问题