背景
群友分享一道题,一看很熟悉,但是不知道怎么解释。
刚好最近看了《自己动手写Java虚拟机》,对着指令集一行一行分析了一下。
public class T {
public static void main(String[] args) {
int a = 1;
a=a++;
System.out.println(a);//问输出多少
}
}
具体分析
主要就是对本地变量表的数据+1(为2)后,栈顶的1又覆盖了本地变量表的数据,导致a最终仍为1。
具体每一行,看图吧,应该很清楚了。
Chapter 6. The Java Virtual Machine Instruction Set
JVM 指令集整理
《手把手写Java虚拟机》第4章