考虑下面的情形:
码:1执行顺序如何在静态变量和块之间执行?
public class StaticDemo {
static{
b=5;
System.out.println("Static B:"+b);/*Compilation error:"Cannot reference a field before it is defined"*/
}
static int b;
static{
System.out.println("B:"+b);
}
public static void main(String[] args) {
}
}
注释的代码如下,有没有错误,下面的输出已显示。
码:2
public class StaticDemo {
static{
b=5;
//System.out.println("Static B:"+b);
}
static int b;
static{
System.out.println("B:"+b);
}
public static void main(String[] args) {
}
}
输出 -
B:5
如果执行基于在其中静态变量或块已被写入的顺序上。
为什么不抛出初始化中的代码所示(
b=5
) 编译错误:2。也请解释为什么错误被抛出代码:1,如果 代码:2是真的吗?
这个问题的答案 http://stackoverflow.com/questions/16635200/java-accessing-static-variables-inside-static-block – Oliver