1.變數初始化順序:靜態變數(靜態初始化塊)----->變數(變數初始化塊)----->構造器
public class initializationtest
// 初始化塊
// 構造器
public initializationtest()
public static void main(string args)
}
列印結果:靜態變數靜態初始化塊
變數初始化塊
構造器初始化
2. 如果有繼承關係又是怎麼樣的呢?
class parent
// 初始化塊
// 構造器
public parent()
}public class subclass extends parent
// 初始化塊
// 構造器
public subclass()
// 程式入口
public static void main(string args)
/*** 列印結果
* 父類--靜態變數 父類--靜態初始化塊
子類--靜態變數 子類--靜態初始化塊
父類--變數 父類--初始化塊
父類--構造器
子類--變數 子類--初始化塊
子類--構造器
*/}
首先是父類靜態變數---->子類靜態變數----->父類變數---->父類構造器----->子類變數------>子類構造器
3.如果是靜態變數和靜態變數之間初始化順序則是按照變數宣告出現的順序初始化
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...