这是因为 public static int counter = 3; 等价于 public static int counter; static{ counter = 3; } 你如果把public static int counter=3; 放在static块之后,则是先创建成员变量counter(未赋初值),然后先执行你的counter+=1,后再执行counter=3; public class Test { public static int counter1 = 3; static { counter1 = 1; counter2 = 1; } public static int counter2 = 3; public static void main(String[] args) { System.out.println(Test.counter1); System.out.println(Test.counter2); } } 你执行一下我写的这个代码,执行的结果是1 3,而不是1 1,你应该就能够理解我说的了。
public static int counter = 3;
等价于
public static int counter;
static{
counter = 3;
}
你如果把public static int counter=3; 放在static块之后,则是先创建成员变量counter(未赋初值),然后先执行你的counter+=1,后再执行counter=3;
public class Test {
public static int counter1 = 3;
static {
counter1 = 1;
counter2 = 1;
}
public static int counter2 = 3;
public static void main(String[] args) {
System.out.println(Test.counter1);
System.out.println(Test.counter2);
}
}
你执行一下我写的这个代码,执行的结果是1 3,而不是1 1,你应该就能够理解我说的了。