1. 程式人生 > >【深入Java虛擬機器】之四:類載入機制

【深入Java虛擬機器】之四:類載入機制

    我們來看得到該結果的步驟。首先在準備階段為類變數分配記憶體並設定類變數初始值,這樣A和B均被賦值為預設值0,而後再在呼叫<clinit>()方法時給他們賦予程式中指定的值。當我們呼叫Child.b時,觸發Child的<clinit>()方法,根據規則2,在此之前,要先執行完其父類Father的<clinit>()方法,又根據規則1,在執行<clinit>()方法時,需要按static語句或static變數賦值操作等在程式碼中出現的順序來執行相關的static語句,因此當觸發執行Father的<clinit>()方法時,會先將a賦值為1,再執行static語句塊中語句,將a賦值為2,而後再執行Child類的<clinit>()方法,這樣便會將b的賦值為2.