Java代碼執行順序
阿新 • • 發佈:2017-11-09
system lob copy println sed view 以及 pub -m
下面程序的運行結果是什麽()
class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println("I‘m A class"); } static { System.out.println("static A"); } } public class HelloB extends HelloA { public HelloB() { System.out.println("HelloB"); } { System.out.println("I‘m B class"); } static { System.out.println("static B"); } public static void main(String[] args) { new HelloB(); } }
答案:
static A static B I‘m A class HelloA I‘m B class HelloB
解析:考查靜態語句塊、構造語句塊(就是只有大括號的那塊)以及構造函數的執行順序。
對象的初始化順序:(1)類加載之後,按從上到下(從父類到子類)執行被static修飾的語句;(2)當static語句執行完之後,再執行main方法;(3)如果有語句new了自身的對象,將從上到下執行構造代碼塊、構造器(兩者可以說綁定在一起)。
下面稍微修改下上面的代碼,以便更清晰的說明情況:
View Code此時輸出結果為:
static A static B -------main start------- I‘m A class HelloA I‘m B class HelloB I‘m A class HelloA I‘m B class HelloB -------main end-------
Java代碼執行順序