这是我正在运行的代码,此代码的输出为4 2 1 3,有人可以解释为什么按此顺序打印结果。
public class goFuncTest { goFuncTest() { System.out.print("1 "); } { System.out.print("2 "); } public static void main(String[] args) { new goFuncTest().go(); } void go() { System.out.print("3 "); } static { System.out.print("4 "); } }
根据您最近的问题编辑,您的输出将是4 2 13。首先运行静态初始化程序,然后运行实例初始化程序。如果您有多个相同类型的初始化程序,则它们将按照它们在类中出现的顺序执行。
// static initializer first static { System.out.print("4 "); } // then instance initializer { System.out.print("2 "); }
接下来,构造函数启动,这将为您提供:
goFuncTest() { System.out.print("1 "); }
最后,该方法被调用:
void go() { System.out.print("3 "); }