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

原文地址:https://www.cnblogs.com/lkc9/p/13941534.html