類變數、例項變數的初始化比較相似,對於例項變數有一個例子public class RAMTest { { price = 3.4;//①--非靜態語句塊 } public RAMTest(double price) { this.price = price;//②--建構函式 } double price = 2.0;//③--宣告語句並賦值}本例中對例項變數price的初始化有三處執行順序為:③中price變數宣告[price=0.0] --①中price變數賦值[price=3.4] --③中price變數賦值[price=2.0] --②中price建構函式賦值 需要注意的是,雖然非靜態語句初始塊中的price變數的賦值在宣告之前,但實際上執行的時候會先執行變數的宣告,再按程式碼順序執行變數值的賦值動作,然後再進行建構函式對例項的初始化構造。 這三種例項變數的初始化語句經過編譯器處理後,都會合併到構造器中去,其中定義變數語句轉換得到的賦值語句、初始化塊中的語句轉化得到的賦值語句,總是位於構造器的所有語句之前。合併後兩種賦值語句的順序保持他們在原始碼中的順序。
類變數、例項變數的初始化比較相似,對於例項變數有一個例子public class RAMTest { { price = 3.4;//①--非靜態語句塊 } public RAMTest(double price) { this.price = price;//②--建構函式 } double price = 2.0;//③--宣告語句並賦值}本例中對例項變數price的初始化有三處執行順序為:③中price變數宣告[price=0.0] --①中price變數賦值[price=3.4] --③中price變數賦值[price=2.0] --②中price建構函式賦值 需要注意的是,雖然非靜態語句初始塊中的price變數的賦值在宣告之前,但實際上執行的時候會先執行變數的宣告,再按程式碼順序執行變數值的賦值動作,然後再進行建構函式對例項的初始化構造。 這三種例項變數的初始化語句經過編譯器處理後,都會合併到構造器中去,其中定義變數語句轉換得到的賦值語句、初始化塊中的語句轉化得到的賦值語句,總是位於構造器的所有語句之前。合併後兩種賦值語句的順序保持他們在原始碼中的順序。