问题描述
我有一个int类型静态属性,初始值为0,在代码块中对其进行加法运算,但在main方法中遍历输出时,其从1开始输出数据,这就非常的奇怪。
问题出现的环境背景及自己尝试过哪些方法
遇到这种问题后,我首先去掉静态代码块,直接对静态属性做加法运算,其是从0输出来的,如下代码所示:
package com.zbystudy;
/**
* Created By zby on 14:27 2019/4/12
*/
public class StaticFiled {
public static int count = 0;
private final int objCount = count++;
public void printObjCount() {
System.out.println("生成对象的个数为: " + objCount);
}
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
new StaticFiled().printObjCount();
}
}
}
输出结果如图所示:
相关代码
但是,改为代码块就不是我预想的那样,如下代码所示:
package com.zbystudy;
/**
* Created By zby on 14:27 2019/4/12
*/
public class StaticFiled {
public static int count = 0;
{
count++;
}
private final int objCount = count;
public void printObjCount() {
System.out.println("生成对象的个数为: " + objCount);
}
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
new StaticFiled().printObjCount();
}
}
}
其输出结果是:
如果我把count++;
修改为 ++count;
其输出结果也是如此,这就很奇怪哎?
new StaticFiled()的时候执行了一次count++