直接上代碼 java
public class Study { public Study(){//構造方法 System.out.println("init"); } {//構造代碼塊 System.out.println("hehe"); } static {//靜態代碼塊 System.out.println("haha"); } public static void main(String[] args) { Study s1 = new Study(); Study s2 = new Study(); } }
執行結果code
結論:1)靜態代碼塊優先執行而且只執行一次。2)構造代碼塊優先構造方法執行,而且每次調用構造方法都會執行。blog
在繼承的狀況下繼承
public class Study { public Study(){//構造方法 System.out.println("老子構造方法"); } {//構造代碼塊 System.out.println("老子構造代碼塊"); } static {//靜態代碼塊 System.out.println("老子靜態代碼塊"); } public static void main(String[] args) { Study s1 = new Study1(); Study s2 = new Study1(); } } class Study1 extends Study{ public Study1(){//構造方法 System.out.println("兒子構造方法"); } {//構造代碼塊 System.out.println("兒子構造代碼塊"); } static {//靜態代碼塊 System.out.println("兒子靜態代碼塊"); } }
結論:1)靜態代碼塊老是優先執行。2)父類構造塊構造方法優先子類構造塊構造方法。it