2017-09-17 6 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

System.out.println(a1.a); 

を置き換え? – bcsb1001

+5

「したい?スラングではなく、実際の英語の単語を気にするかもしれません。これはヤフーグループではありません。 –

+2

Java用にスニペットを使用しないでください。 –

答えて

0

aは静的変数であるので、A a1への参照が参照解除されていないため。代わりにA.aと書いて、コードをより直感的にすることができます。

2

コンパイラはここにとてもインテリジェントなので、基本的に、なぜそれがエラーを与えるだろう

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

サイドノート:私はまだJavaそのような静的メソッド/変数を呼び出すことだけが混乱につながるので、ここでは 'a1.a'という表記を許可しています... –

関連する問題