下面是我的代碼,想知道爲什麼null打印而不是Hello World !!!Java靜態變量被分配爲空值
public class MyClass {
static String s1 = getMyValue();
static String s2 = "Hello World!!!";
private static String getMyValue() {
return s2;
}
public static void main(String args[]) {
System.out.print(s1); //outputs: null
}
}
嘗試把S2初始化S1之前。 – Berger
按聲明順序初始化。因此's1'被賦值給'getMyValue()',它返回'null',因爲's2'還沒有被賦值。 – Tunaki
我很久沒有碰過Java了,但是您不需要使用'this.getMyValue()'引用內部函數,這似乎是C#,PHP中的常見用法,並且據我記得Java。可能會有所改變。任何人都可以對此有所瞭解?實際上,使用其他方法分配的類屬性通常會在構造函數中執行。 – dchayka