Java--普通代码块静态代码块执行顺序
1 class B { 2 3 public B() { 4 super(); 5 System.out.println("构造器B"); 6 } 7 { 8 System.out.println("普通的代码块B"); 9 } 10 static{ 11 System.out.println("静态代码块B"); 12 } 13 14 } 15 public class ClassA extends B { 16 17 public ClassA() { 18 super(); 19 System.out.println("构造器A"); 20 } 21 { 22 System.out.println("普通的代码块A"); 23 } 24 static{ 25 System.out.println("静态代码块A"); 26 } 27 public static void main(String[] args) { 28 ClassA a=new ClassA(); 29 } 30 }
运行结果如下:
静态代码块B
静态代码块A
普通的代码块B
构造器B
普通的代码块A
构造器A
可以看到静态代码块被优先执行,然后是父类的普通代码块,父类构造器,然后才是子类的普通代码块,子类构造器
人生如水,不争高山,自然愈下,三年又三年。——struggle!