本文**:並作了增減。
1、無繼承
對於靜態變數、靜態初始化塊、變數、初始化塊、構造器,它們的初始化順序是:
(靜態變數、靜態初始化塊)>(變數、初始化塊)>構造器
public class initialordertest
public initialordertest()
public static void main(string args) }
輸出結果:
靜態變數
靜態初始化塊
變數 初始化塊
構造器2、有繼承
子類的靜態變數和靜態初始化塊的初始化是在父類的變數、初始化塊和構造器初始化之前就完成。
class parent
// 初始化塊
// 構造器
public parent()
}//如果你想把這兩個類放在同乙個檔案且名字起為subclass, 父類前不能加public
public class subclass extends parent
// 初始化塊
// 構造器
public subclass()
// 程式入口
public static void main(string args)
}輸出結果:
父類–靜態變數
父類–靜態初始化塊
子類–靜態變數
子類–靜態初始化塊
父類–變數
父類–初始化塊
父類–構造器
子類–變數
子類–初始化塊
子類–構造器
3、靜態變數和靜態初始化塊
靜態變數和靜態初始化塊是按照他們在類中的定義順序進行初始化的。同樣,變數和初始化塊也遵循這個規律。
public class testorder
// 靜態初始化塊
static
public static void main(string args)
} class testa
} class testb
} class testc
}輸出結果:
test–a
test–b
靜態初始化塊
test–c
in constract
4、初始化雜記
1. 類中域的初始化:預設值為(數值為0、布林變數為false、物件引用為null)
方法中區域性變數必須明確初始化,否則會報錯。
2. 如果類中提供了至少乙個構造器,但是沒有提供無引數的構造器,則在構造物件時如果沒有提供引數就會被視為不合法。
Java 變數初始化順序
tij 第四版在 初始化順序 部分講到,變數定義的先後順序決定了初始化的順序 我認為這句話是不準確的,當然也可能是翻譯者的問題。因為實際上,變數定義的先後順序與初始化順序無關。class cup public class cups cups public static void main strin...
java變數初始化順序
子類 son 父類father。1.先初始化父類的靜態變數或靜態 塊。不分先後,以定義的先後順序為準 2.初始化子類的靜態變數或靜態 塊 3.初始化父類的非靜態變數,執行建構函式 4.初始化子類的非靜態變數,執行建構函式。比如 father fa new son 向上轉型,不用強制型別轉換 fa 呼...
java變數初始化順序
在類的內部,變數定義的先後順序決定了初始化順序,即使變數定義分散在方法定義之外,它們依舊會在任何方法 包括構造器 被呼叫之前得到初始化 其中初始化的順序先是靜態物件,其後是非靜態物件 例如 class cat class dog public class teststatic 執行結果 test.d...