字节码图解i++
目录
直接给出如下代码,问运行结果
我们使用javap来解析二进制字节码文件,使用图解的方式依次分析t1-t5。
指令集参考{%post_link 工作/200_编程语言/java/jvm/jvm指令集 jvm指令集%}
t1
字节码
stack=1: 操作数栈大小为1
locals=3: 局部变量表大小为3,其中slot0存储this地址
执行过程
总结:++i 是先对i1 执行+1操作后,再load出来, 此时栈顶为2, i1=2,i2=2
t2
字节码
执行过程
总结:i++ 是先load i1, 再对i1 执行+1操作,此时栈顶还是1,i1=2,i2=1
t3
字节码
执行过程
总结:同t1, 区别无非就是store回i1还是i2,注意此时局部变量表长度为2,i1=2
t4
字节码
执行过程
总结:同t2, 区别是最后store回i1, i1=1
t5
字节码
执行过程
总结:连续对局部变量表i1位置执行+1操作,此时i1=3, 再将i1入栈, 执行iadd操作, 最后结果为4.