为什么i++后,i++的值不变

第0:将int类型的0入栈,就是放到操作数栈的栈顶
【为什么i++后,i++的值不变】第1:将操作数栈栈顶的值0弹出,保存到局部变量表 index (索引)值为1的位置 。(局部变量表也是从0开始的,0位置一般保存当前实例的this引用,当然静态方法例外,因为静态方法是类方法而不是实例方法)

为什么i++后,i++的值不变

文章插图
第2:将局部变量表index 1位置的值的副本入栈 。(这时局部变量表index为1的值是0,操作数栈顶的值也是0)
第3:iinc是对int类型的值进行自增操作 , 后面第一个数值1表示,局部变量表的index值,说明要对此值执行iinc操作,第二个数值1表示要增加的数值 。(这时局部变量表index为1的值因为执行了自增操作变为1了 , 但是操作数栈中栈顶的值仍然是0)
为什么i++后,i++的值不变

文章插图
第6:将操作数栈顶的值弹出(值0),放到局部变量表index为1的位置(旧值:1,新值:0),覆盖了上一步局部变量表的计算结果 。
第7:将局部变量表index 1位置的值的副本入栈 。(这时局部变量表index为1的值是0,操作数栈顶的值也是0)