关于#eclipse#的问题:经历for循环之后为什么不会是100,而是0。

img
关于#eclipse#的问题:经历for循环之后为什么不会是100,而是0,而变成++j就会变成100.

这个问题有点复杂,涉及到栈和虚拟机了,某乎上有个解释比较详细
https://zhuanlan.zhihu.com/p/40645506

++在后面是执行完该语句再加一,++在前面是先加一在执行。所以你的j循环100次,每次都是0。

j++本身就有j=j+1;的意思,而j=j++;顺序是先把j赋值给j,然后再加1,所以这句代码本身就是存在矛盾的。你可以把j=j++换成m=j++,这样最终结果m就会变成100了。

参考这篇文章,Java在编译i=i++时会把i的值通过临时变量,储存起来,自增以后使用临时变量赋值