Java 變數初始化順序

2021-06-22 23:12:16 字數 487 閱讀 4653

《tij》第四版在「初始化順序」部分講到,

「變數定義的先後順序決定了初始化的順序」。

我認為這句話是不準確的,當然也可能是翻譯者的問題。

因為實際上,變數定義的先後順序與初始化順序無關。

class cup

}public class cups

cups()

public static void main(string args)

}

上面程式中,類cups的兩個成員變數cup1、cup2的定義順序為cup1在先、cup2在後,但是控制台輸出的結果是:

cup(2)

cup(1)

cups()

可見實際初始化順序並非定義順序。原因在於**中花括號括起來的例項初始化作用域中,完成了真正意義的初始化 。

所以我認為,成員變數初始化的順序就是」初始化的順序「,雖然這句話看起來好像沒說,但仔細體會,就是這樣。

java變數初始化順序

子類 son 父類father。1.先初始化父類的靜態變數或靜態 塊。不分先後,以定義的先後順序為準 2.初始化子類的靜態變數或靜態 塊 3.初始化父類的非靜態變數,執行建構函式 4.初始化子類的非靜態變數,執行建構函式。比如 father fa new son 向上轉型,不用強制型別轉換 fa 呼...

java變數初始化順序

在類的內部,變數定義的先後順序決定了初始化順序,即使變數定義分散在方法定義之外,它們依舊會在任何方法 包括構造器 被呼叫之前得到初始化 其中初始化的順序先是靜態物件,其後是非靜態物件 例如 class cat class dog public class teststatic 執行結果 test.d...

java變數初始化順序

1.變數初始化順序 靜態變數 靜態初始化塊 變數 變數初始化塊 構造器 public class initializationtest 初始化塊 構造器 public initializationtest public static void main string args 列印結果 靜態變數靜態...