當沒有繼承關係時,靜態塊、靜態方法、非靜態方法、構造方法、普通方法的執行順序
阿新 • • 發佈:2018-12-09
執行結果:<span style="font-size:18px;">package test; /** * 不含有繼承時,各種方法(靜態塊,靜態方法,非靜態程式碼塊,構造方法,普通方法)的執行順序 * */ public class uExtend { public static void test(){ System.out.println("靜態方法"); } static { System.out.println("靜態程式碼塊"); } public uExtend() { System.out.println("建構函式"); } { System.out.println("非靜態程式碼塊"); } public void method1() { System.out.println("普通方法"); } public static void main(String[] args) { uExtend.test(); new uExtend().method1(); } }
靜態程式碼塊
靜態方法
非靜態程式碼塊
建構函式
普通方法
總結:
先執行靜態塊中的內容,其次判斷是否有靜態方法在new uExtend()之前執行,如果有的話,就先執行靜態方法(在執行構造方法之前先執行靜態方法),否則直接執行非靜態程式碼塊,之後執行構造方法。
如果new uExtend()方法位置在呼叫靜態方法之前,則靜態方法在執行完構造方法(new uExtend())之後再呼叫。