方法执行的顺序是什么?

What order are methods executed?

所以我有这段代码,产生的输出是 xycg...但是如何呢?谁能解释一下这是怎么回事。

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");
    }
}

我什至不明白怎么写

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

这个也可以解释一下吗

还有写system.out.print("y")的位,怎么写在它自己的block里,不在sequence constructor里?

首次加载 class 时执行静态块。

非静态初始化块在构造函数之前执行。

在调用实例上的非静态方法之前先执行构造函数。

这实际上是一个非常好的演示此顺序的最小代码示例。