如果根据以上java规范中给出的顺序也可以合理的解释程序的输出结果,那么如何亲眼看到是规范中的顺序而不是以上根据程序的输出推断的顺序呢? 下面就使用JDK自带的javap工具看看实际的顺序,这个工具是一个根据编译后的字节码生成一份字节码的助记符格式的文档的工具,就像根据机器码生成汇编代码那样。 反编译:javap -c -classpath . Child 输出的结果是(已经经过标记,交替使用黑体和斜体表示要讲解的每一块): Compiled from InitializationTest.java class Child extends Parent { int cm1; int cm2; int cm3; Other co; public static int scm1; static {}; Child(); Child(int); int cmethod(); static void staticmethod(); }