从字节码角度分析i++与++i的区别

发布时间:2024年01月12日

情况一 :
当i++与++i没有对象接收值时, 没有任何区别
在这里插入图片描述
情况二 :
当i++与++i没有对象接收值时
在这里插入图片描述
可以看到 i++时, 先把i值10从局部变量表拿到操作数栈(29), 之后执行iinc, 直接修改局部变量表里面的值10修改成11(30), 最后将操作树栈里面的值赋值给i4(33) (由于iinc直接修改的局部变量表里面的值, 此时操作数栈还是10, 所以将10赋值给i4)

++i时的情况也是相同, iinc(52)修改了局部变量表里面的值, 但是在(55)又重新load一次, 相当于把局部变量表增加1之后的值加载到操作数栈, 最后将这个值加载给i6

文章来源:https://blog.csdn.net/hc1428090104/article/details/135554061
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。