Demo小細節-2
阿新 • • 發佈:2019-08-28
今天在牛客的題海中再次找虐,題目如下:
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出來了,“先執行靜態塊,再執行三個構造的程式碼塊”這樣子
但是,最後發現這個阿里爸爸的題,還是年輕啊
正確的理解是這樣的:
最先初始化的並不是靜態塊,而是靜態域!!!
而靜態域中包含的是(靜態塊、靜態變數、靜態方法),而最想初始化的是靜態變數和靜態塊,而這倆的初始化順序則由他們在程式之中的位置決定