代码1:
public class StaticBlockExample1
{
static { value = 20; }
static int value = 10;
public static void main(String[] args) {
System.out.println(" Value = " + value);
}
}
StaticBlockExample1的输出为10
代码2:
public class StaticBlockExample2
{
static int value = 10;
static { value = 20; }
public static void main(String[] args)
{
System.out.println(" Value = " + value);
}
}
StaticBlockExample2的输出为20。
与上述例子的输出相混淆。在静态块之前或之后声明静态变量有什么意义吗?
答案 0 :(得分:15)
是的,静态块和静态字段初始化按输入文件中的顺序执行。
答案 1 :(得分:1)
最重要的是你的inicializations的顺序。 - 第一种情况 - 10被定义为第二种
static int value = 10;
并且在第二种情况下,块是第二个
static {
value = 20;
}
答案 2 :(得分:1)
初始化顺序不同
首先:在变量声明之前定义静态块
第二:在变量声明后定义静态块