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

时间:2017-09-17 15:56:28

标签: 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);
    }
}

2 个答案:

答案 0 :(得分:2)

因为编译器在这里很聪明,它基本上取代了

 System.out.println(a1.a);

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

答案 1 :(得分:0)

因为a是一个静态变量,所以对A a1的引用不会被解除引用。您可能希望编写A.a来使代码更直观。