在java中,其应该是先于所有的方法执行。
下面是测试代码:
1 public class Test1 {
2 static{
3 System.out.println("执行静态初始化块test1...");
4 }
5 {
6 System.out.println("执行初始化块test1");
7 }
8 public Test1(){
9 System.out.println("执行test1构造函数");
10 }
11 }
12
13
14
15 public class Test2 extends Test1{
16 static{
17 System.out.println("执行静态初始化块test2...");
18 }
19 {
20 System.out.println("执行初始化块test2");
21 }
22 public Test2(){
23 System.out.println("执行test2构造函数");
24 }
25 }
26
27
28
29 public class Test3 extends Test2{
30 static{
31 System.out.println("执行静态初始化块test3...");
32 }
33 {
34 System.out.println("执行初始化块test3");
35 }
36 public Test3(){
37 System.out.println("执行test3构造函数");
38 }
39 }
40
41
42
43 ----------------------------------------------------------------------------------------------------
44
45 public class Test {
46 public static void main(String[] args){
47 Test3 t = new Test3();
48 }
49 }
运行结果如图:
从结果即可看出,静态初始化块的执行顺序十分靠前,并且在静态初始化块之间,谁在程序的前面谁先执行。