前++是什么鬼?前++就是先自加,然后再使用,我以前一直是这么理解的,这样理解也的确没问题;
后++是什么鬼?后++就是先使用,然后再自加,我以前一直是这么理解的,这样理解也的确没问题;
直到我遇到如下代码,我严重怀疑自己还没搞懂java中的前++和后++知识点;
直接po代码
public class Test {
public static void main(String[] args) {
int count = 0;
for (int index = 0; index < 10; index++) {
count = count++;
}
System.out.println("count=" + count);
}
}
运行如上代码,运行结果是count=0
惊不惊喜,意不意外?
然后我看一些资料上说,这是个自增陷阱!要警惕这种自增陷阱。
i++和++i,i++表示的是先赋(使)值(用)后加1,++i表示的是先加1后赋(使)值(用)。
count++是一个表达式,是返回值,它的返回值就是count自加前的值,java对自身加是这样处理的:首先把count的值(注意的是值,不是引用)拷贝到一个临时变量区,然后对count变量加1,最后返回临时变量区的值。
程序循环执行步骤:步骤1:jvm 把count 值(其值是0)拷贝到临时变量区;步骤2:count值加1,这时候count的值是1;
步骤三:返回临时变量区的值,注意这个值是0,没有修改过,步骤4:返回赋值给count,此时count值被重置成0。