在java中当我们定义
int i = 0;
i = i++;
System.out.println(i);
其结果是0;
首先我们来反汇编一下对应的class文件
javap -c Test
0行iconst_0是将字面值0放到入栈放到的operand stack中,
1行istore_1是从operand stack出栈将0写到Local variable Area中
2行iload_1是从local variable读出0的值入栈
3行iinc是对local variable中的值进行自加
6行istore_1是将operand stack在2行入栈的值写到1行的local variable中.
这样就把0再回写过去了.
简单一点理解就是约等于
int i = 0;
int t = i;
i = i + 1;
i = t;