先来看下这段代码:
public static void main(String[] args) {
int count = 0;
for (int i = 0; i < 10; i++) {
count=count++;
}
System.out.println(count);
}
}
结果是什么呢?结果是10?不对,结果是0。为什么呢?
我们来看看i++Jvm做了什么。
步骤一:JVM将i的值,而不是引用,拷贝到临时变量区
步骤二:将count值加一
步骤三:返回临时变量区的值。
而i=i++;相当于多了一步,将i=i(这个"i"是临时变量区的值,为0),所以i=i++,在这里一直都是0。
所以i++是先返回值,再赋值。
而++i则相反。所以上面要返回想要的值,可以改为count++;或者count=++count;