代码如下,错在哪行?为什么?
public class Demo {
static {
i = 0;
System.out.println(i);
}
private static int i = 10;
}
答案:第4行的,打印输出编译报错:Illegal forward reference (非法前向引用)
总结:类变量,如果要在声明前访问,只能用简单的变量名左值访问,不能用简单的变量名右值访问(可以用类名.类变量名来访问)
解释在 Java语言规范 中,参考下面官方声明
8.3.3. Forward References During Field Initialization
https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.3.1.1