【发布时间】:2014-12-20 17:41:54
【问题描述】:
class revi {
static {
i = 3;
System.out.println("Hello World!");
}
static int i = 15;
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
上面的程序在i=3没有给出任何错误;但是当我们在静态块的println() 方法中调用i 时,它会显示错误
revi.java:6: 错误:非法前向引用 System.out.println("Hello World!"+i); ^ 1 个错误
class revi {
static {
i = 3;
System.out.println("Hello World!" + i);
}
static int i = 15;
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
但是如果像这样修改上面的程序它可以工作(首先加载静态变量)println方法没有错误
class revi {
static int i = 15;
static {
i = 3;
System.out.println("Hello World!" + i);
}
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
请解释内部流程...
【问题讨论】:
-
如你所见:静态初始化块只能引用之前声明的静态变量。
-
“它显示错误”永远是不够的信息。请告诉我们您遇到了什么错误。