谁能解释这段代码有什么问题:
public class Base {
static {
i = 1;
System.out.println("[Base]after static init block i=" + i);// LINE 1
System.out.println("*************************************");
System.out.println();
}
static int i;
public static void main(String[] args) {
System.out.println(Base.i);
}
}
如果我评论 LINE 1 - 一切正常并且 Base.main 方法打印“1”。如果第 1 行 - 未注释,则会出现编译时错误:“非法前向引用”。所以,正如我在静态初始化块中理解的那样,我可以为 i 设置值,但不能读取。谁能解释为什么?