为什么这会给我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 :(得分:2)
因为编译器在这里很聪明,它基本上取代了
System.out.println(a1.a);
带
System.out.println(A.a); //The name of your class 'A'
答案 1 :(得分:0)
因为a
是一个静态变量,所以对A a1
的引用不会被解除引用。您可能希望编写A.a
来使代码更直观。