1. 程式人生 > >Demo小細節-2

Demo小細節-2

今天在牛客的題海中再次找虐,題目如下:

 1 public class B {
 2      public static B t1 = new B();
 3         public static B t2 = new B();
 4         {
 5             System.out.println("構造塊");
 6         }
 7         static
 8         {
 9             System.out.println("靜態塊");
10         }
11         public static void main(String[] args)
12         {
13             B t = new B();
14         }
15     
16 }

 按照腦回路一看這題就一股腦兒就直接biu出來了,“先執行靜態塊,再執行三個構造的程式碼塊”這樣子

但是,最後發現這個阿里爸爸的題,還是年輕啊

正確的理解是這樣的:

最先初始化的並不是靜態塊,而是靜態域!!!

而靜態域中包含的是(靜態塊、靜態變數、靜態方法),而最想初始化的是靜態變數和靜態塊,而這倆的初始化順序則由他們在程式之中的位置決定