它们按照您编写它们的顺序执行。如果代码是:
public class Test { static int k = 1; static {k = 2;} public static void main(String[] args) { System.out.println(k); }}然后输出变为2。
初始化的顺序是:..class的类变量初始化器和静态初始化器…,按文本顺序,就好像它们是单个块一样。
值(对于您的代码)为:k = 0(默认值),然后将其设置为2,然后将其设置回1。
您可以通过运行以下代码来检查其实际设置为2:
private static class Test { static { System.out.println(Test.k); k = 2; System.out.println(Test.k); } static int k = 1; public static void main(String[] args) { System.out.println(k); }}


