2017-09-17 73 views
-6

爲什麼這給我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); 
    } 
} 
+0

爲什麼它會給出一個錯誤? – bcsb1001

+5

「想要」?你可能會使用真正的英語單詞而不是俚語。這不是雅虎組織。 –

+2

請不要在Java中使用片段。 –

回答

0

由於a是一個靜態變量,因此A a1引用不會解除引用。您可能需要編寫A.a而不是使代碼更直觀。

2

因爲編譯器是非常聰明在這裏,它基本上取代

System.out.println(a1.a); 

System.out.println(A.a); //The name of your class 'A' 
+0

在旁註:我仍然想知道爲什麼Java甚至在這裏允許使用'a1.a'這個符號,因爲它只會導致混淆,無法調用這樣的靜態方法/變量...... –