Java 这个代码的输出是10,为什么?

Java 这个代码的输出是10,为什么?,java,Java,为什么这给了我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是一个静态变量,所以对a1的引用不会被取消引用。您可

为什么这给了我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
是一个静态变量,所以对
a1
的引用不会被取消引用。您可能需要编写
A.A
,以使代码更直观。

因为编译器在这里非常智能,它基本上取代了

 System.out.println(a1.a);


为什么会出现错误?“想要”?你可能想用真正的英语单词,而不是俚语。这不是yahoo groups。请不要使用Java.Duplicate of和许多其他的代码片段…另一方面:我仍然想知道为什么Java甚至允许在这里使用符号
a1.a
,因为这样调用静态方法/变量只会导致混乱。。。
System.out.println(A.a); //The name of your class 'A'