我知道,這是一個非常基本的主題,所以如果它是一個重複的問題,請提供參考。在Java中初始化的順序
說,有下面的代碼:
public class Point {
int x = 42;
int y = getX();
int getX() {
return x;
}
public static void main (String s[]) {
Point p = new Point();
System.out.println(p.x + "," + p.y);
}
}
它輸出:42,42
但是,如果我們改變變量的出現順序:
public class Point {
int y = getX();
int x = 42;
int getX() {
return x;
}
public static void main (String s[]) {
Point p = new Point();
System.out.println(p.x + "," + p.y);
}
}
它輸出: 42,0
我明白我在第二種情況下,情況可以被描述爲:「好的,我不知道返回的x值是什麼,但是有一些價值」。我不完全理解的是,x在這裏可能看不到它的價值。這是編譯時間和運行時間的問題嗎?提前致謝。
檢查[JLS](http://docs.oracle.com/javase/specs/ jls/se7/html/jls-4.html#jls-4.12.5) – assylias 2012-03-25 23:48:13