Java中普通代码块,构造代码块,静态代码块执行顺序
如果没有this()或super(),执行顺序为:静态代码块>main方法>构造代码块>构造方法;如果有,则先进入this()或super()。
普通代码块,构造代码块,静态代码块,都是在类加载时执行,但是静态代码块只执行一次,而构造代码块每次创建对象时都会执行。
public class MyLearning { public static int a = 0; public static void main(String[] args){ MyLearning learn = null; System.out.println("************"); learn = new MyLearning(); } //静态代码块 static { a = 10; System.out.println("父类的静态代码块在执行a=" + a); } //构造代码块 { a = 8; System.out.println("父类的非静态代码块在执行a=" + a); } public MyLearning() { this("a在父类带参构造方法中的值:" + MyLearning.a); // 调用另外一个构造方法 System.out.println(a); System.out.println("父类无参构造方法在执行a=" + a); } public MyLearning(String n) { System.out.println(n); System.out.println(a); } }
执行结果如下:
父类的静态代码块在执行a=10
************
父类的非静态代码块在执行a=8
a在父类带参构造方法中的值:10
8
8
父类无参构造方法在执行a=8

浙公网安备 33010602011771号