i = i ++ 转成字节码之后顺序是:
iload_1表示将局部变量表中下标为1的变量,也就是变量 i 的值复制一份,加载到操作数栈顶
innc 1,1 指令则将局部变量表中变量 i 的值加1再写回局部变量表中变量 i 的位置
istore_1则将栈顶的数据覆盖局部变量表中变量i的位置
iload_1
iinc 1, 1
istore_1
++ i
则是先修改局部变量 i
再进行加载和覆盖
iinc 1, 1
iload_1
istore_1
i = i ++ 转成字节码之后顺序是:
iload_1表示将局部变量表中下标为1的变量,也就是变量 i 的值复制一份,加载到操作数栈顶
innc 1,1 指令则将局部变量表中变量 i 的值加1再写回局部变量表中变量 i 的位置
istore_1则将栈顶的数据覆盖局部变量表中变量i的位置
iload_1
iinc 1, 1
istore_1
++ i
则是先修改局部变量 i
再进行加载和覆盖
iinc 1, 1
iload_1
istore_1