java中:j=j++;j等于0的问题
代码:
int j = 0;
j = j++;
System.out.println("j= " + j);
结果:
j= 0
原因:
赋值运算在自增运算之前已经完成了。在这里JVM里面有两个存储区,一个是暂存区(以下称为堆栈),另一个是变量区。j=j++是先将j的值0存入堆栈中,然后对变量区中j自加1,这时j的值确实是1,但随后将堆栈中的值赋给变量区的j,所以最后j=0; 而j=++j,是先对变量区中的j加1,再将变量区中的j值(1)存入堆栈,最后将堆栈中的值赋给自变量区的j,所以j=1;
j++也就是可以理解为:
temp=j;
j=j+1;
j=temp;
–很多人是因为看见才选择相信,有些人是因为相信而看见!
(来着一个做java开发的小渣渣)