class F
{
static
{
i = 1;
}
static int i = 2;
public static void main(String[] args)
{
System.out.println(i);
}
}
此执行的输出为2
。有人可以解释为什么不1
?在哪个序列变量中创建并初始化并执行静态块?
答案 0 :(得分:3)
http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
请检查java文档。
然后清楚地提到无论静态块如何存在,它们将按照它们出现的顺序作为单个块执行
所以,
我的理解是java正在将您的代码视为
static{
i=1;
i=2;
}
static int i;
这就是你得到输出2
的原因希望这有用