【发布时间】:2013-01-31 11:42:50
【问题描述】:
谁能解释这段代码有什么问题:
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 设置值,但不能读取。谁能解释一下原因?
【问题讨论】:
标签: java