静态代码块(主要是注意执行顺序)
静态代码块在类最初被使用的时候执行一次,在构造函数执行之前执行,而且只执行一次。
只要用到类,哪怕没有new只是声明变量也会被执行但是只执行一次。
(静态字段和静态代码块都是在类最初使用的时候执行一次)
1 public class MyJingTaiDaimaKuai 2 { 3 public static int i = test1();//1.最开始执行 4 public int age = test2();//new的时候先执行成员变量的初始化,再执行构造函数 5 6 static MyJingTaiDaimaKuai() 7 { 8 Console.WriteLine("静态代码块");//2.再执行 9 } 10 public MyJingTaiDaimaKuai()//4.//6. 11 { 12 Console.WriteLine("构造函数"); 13 } 14 15 public static int test1() 16 { 17 Console.WriteLine("test1"); 18 return 3; 19 } 20 21 public static int test2()//3.//5. 22 { 23 Console.WriteLine("test2"); 24 25 return 333; 26 } 27 } 28
执行代码
1 MyJingTaiDaimaKuai a1 = new MyJingTaiDaimaKuai(); 2 Console.WriteLine(a1.age); 3 4 MyJingTaiDaimaKuai a2 = new MyJingTaiDaimaKuai(); 5 Console.WriteLine(a2.age);
执行结果
执行结果说明,先执行了静态字段和静态代码块,之后从上往下执行test2和构造函数,并且输出age值。
当第二次运行的时候,静态字段和代码块不再执行,直接从上往下执行test2和构造函数。