靜態程式碼塊、構造器、靜態方法在類中呼叫的先後順序關係
阿新 • • 發佈:2018-12-11
package test; /* * 當一個類中,有靜態方法、靜態程式碼塊、構造方法時; * 如果 初始化該類,new一個物件,則會 * 1,先呼叫靜態程式碼塊; * 2. 再呼叫構造器,初始化該物件; * 3.靜態方法需要被主動顯式呼叫; * 可通過以下簡單的呼叫程式碼得出結論; * 而且,static程式碼塊只會初始化一次,之後不管例項化多少物件,都不會再呼叫該static程式碼塊; * 而構造器依賴於物件而存在,new一個物件,則會呼叫依次構造器。 * */ public class test_static_constrcutor { test_static_constrcutor() { System.out.println("constructor output"); } static { System.out.println("static 靜態程式碼塊輸出"); } static void method(){ System.out.println("static 方法輸出"); } public static void main(String[] args) { new test_static_constrcutor(); System.out.println('\n'); new test_static_constrcutor().method(); System.out.println('\n'); test_static_constrcutor t = new test_static_constrcutor(); t.method(); System.out.println('\n'); //new test(); System.out.println('\n'); new test().method();; } } class test { test() { System.out.println("test constructor output"); } static { System.out.println(" test static 靜態程式碼塊輸出"); } static void method(){ System.out.println(" test static 方法輸出"); } }
執行結果如下: