当我运行这段代码时,答案是1,我以为会是2。
初始化的顺序和每个步骤中k的值是多少?
Possible Duplicate:
Java静态类初始化
静态块和静态变量在类中的执行顺序是什么?
编辑1:作为“k设置为默认值”的后续操作,为什么下面的代码不能编译?出现错误“在定义之前不能引用字段”。
编辑2:由于某些我不知道的原因,当使用“ k”时,它无法正常工作,但当使用“ Test.k”时可以正常工作。
感谢所有的回答,这已经足够了:D
public class Test {
static {k = 2;}
static int k = 1;
public static void main(String[] args) {
System.out.println(k);
}
}
编辑1:作为“k设置为默认值”的后续操作,为什么下面的代码不能编译?出现错误“在定义之前不能引用字段”。
public class Test {
static {System.out.println(k);}
static int k=1;
public static void main(String[] args) {
System.out.println(k);
}
}
编辑2:由于某些我不知道的原因,当使用“ k”时,它无法正常工作,但当使用“ Test.k”时可以正常工作。
感谢所有的回答,这已经足够了:D
static int k = 1
实际上是static int k;
声明,然后是static { k = 1; }
。 - nhahtdhTest.k
打印它)。我没有足够的知识来解释整个情况。从这个链接:1)final字段将根据初始化程序进行初始化2)静态初始化程序和静态块将按照文本顺序运行(在块运行之前,静态字段将具有默认值) - nhahtdh