1、源码和字节码
(1)源码
public class MyTest { public static void main(String[] args){ int a=10; int b=a++ + ++a +a--; System.out.println(a);//11 System.out.println(b);//34 } }
(2)字节码
2、过程分析
(1)字节码指令分析
方法区:
第二步:
第三步:
iinc 1,1:将1号槽位的数据自增1
至此,a++执行完毕
第四步:++a
将10和12存入操作数栈是为了做加法运算
第五步:操作数栈中的数据相加,弹出10和12,存入22
第六步:
iadd,iload_1:
将操作数栈中的数据相加
第七步:
第八步:iload_1,iload_2
3、jvm角度分析a++与++a的区别
原文:https://www.cnblogs.com/zhai1997/p/13334838.html