publicclassC{ static { System.out.println("I am C class static code block");// 静态代码块 }
publicC(){ System.out.println("I am C class constructor");// 构造函数 }
{ System.out.println("I am C class code block two");// 构造代码块 }
{ System.out.println("I am C class code block one");// 构造代码块 }
publicstaticvoidmain(String[] args){ C c = new C(); } }
执行结果
1 2 3 4
I am C class static code block I am C class code block two I am C class code block one I am C class constructor
在main函数中添加C c2 = new C();后再次执行, 执行结果
1 2 3 4 5 6 7
I am C class static code block//静态代码块只执行一次 I am C class code block two I am C class code block one I am C class constructor I am C class code block two I am C class code block one I am C class constructor
publicclassA{ static { System.out.println("I am A class static code block"); }
publicA(){ System.out.println("I am A class constructor"); }
{ System.out.println("I am A class code block"); } } publicclassBextendsA{ static { System.out.println("I am B class static code block"); }
publicB(){ System.out.println("I am B class constructor"); }
{ System.out.println("I am B class code block"); }
publicstaticvoidinit(){ System.out.println("I am B class static method"); }
publicstaticvoidmain(String[] args){ B b = new B(); }
执行结果
1 2 3 4 5 6
I am A class static code block I am B class static code block I am A class code block I am A class constructor I am B class code block I am B class constructor
System.out.println("I am B class main method"); B b = new B(); B.init();
执行的结果是:
1 2 3 4 5 6 7 8
I am A class static code block I am B class static code block I am B class main method I am A class code block I am A class constructor I am B class code block I am B class constructor I am B class static method