int i=1;
i=i++;
System.out.println(i);
关于以上代码,最后输出的值应该是2,为什么结果却是1呢?
作为一个初学者我是这样理解的:
在jvm中,会先给i一个临时变量,这里我们先把临时变量称为temp;
现在我们再拆分一下刚才的代码,如下注解部分:
int i=1;
i=i++; //jvm先给i一个临时变量temp,这里可以拆解为temp=i和i++;
//此时temp=1,temp先入栈,i再自增后变为2;因此i=2后入栈
//由于栈是先入后出的所以,jvm先将i取出放入i的存储单元,此时i=2
//随后将temp取出放入i的存储单元,因此i从新被赋值为1;
//最终结果为i=1;
```