爲什麼這給我10作爲輸出,而不是一個錯誤?這段代碼的輸出是10,爲什麼?
public class A {
static int a = m1();
static int m1(){
return 10;
}
public static void main(String args[]) {
A a1 = null;
System.out.println(a1.a);
}
}
爲什麼這給我10作爲輸出,而不是一個錯誤?這段代碼的輸出是10,爲什麼?
public class A {
static int a = m1();
static int m1(){
return 10;
}
public static void main(String args[]) {
A a1 = null;
System.out.println(a1.a);
}
}
由於a
是一個靜態變量,因此A a1
引用不會解除引用。您可能需要編寫A.a
而不是使代碼更直觀。
因爲編譯器是非常聰明在這裏,它基本上取代
System.out.println(a1.a);
與
System.out.println(A.a); //The name of your class 'A'
在旁註:我仍然想知道爲什麼Java甚至在這裏允許使用'a1.a'這個符號,因爲它只會導致混淆,無法調用這樣的靜態方法/變量...... –
爲什麼它會給出一個錯誤? – bcsb1001
「想要」?你可能會使用真正的英語單詞而不是俚語。這不是雅虎組織。 –
請不要在Java中使用片段。 –