int k=0;k=k++;结果等于0,为什么?

int k = 0;
k = k++;


这两行代码对应的字节码为:
 iconst_0 // 将 int 常量 0 推到操作数栈
 istore_1 // 将操作数栈栈顶的int数存储到局部变量索引为 1 的 int 变量中
 iload_1 // 将局部变量索引为1的 int 值压入操作数栈
 iinc 1 by 1 // 语法 iinc [index] by [value], 将局部变量索引为 1 的int 值增加 1
 istore_1 // 将操作数栈栈顶的int数存储到局部变量索引为 1 的 int 变量中

 

这里推荐一个IDEA插件:

jclasslib Bytecode Viewer

这款插件可以帮助我们更清楚的去查看字节码。使用方式:将鼠标的光标 focks 到你需要得到字节码的代码类中,然后选择IDEA菜单:view -> Show Bytecode With Jclasslib

posted @ 2020-11-07 16:58  lkc9  阅读(583)  评论(0编辑  收藏  举报