java代码
int a = 0;
a = a++;
JVM 指令
0: iconst_0 //常量0 进栈
1: istore_1 //将栈顶数据赋值给第一个变量
2: iload_1 //将第一个变量进栈
3: iinc 1, 1 //第一个变量值加1
6: istore_1 //栈顶数据赋值给第一个变量
0:
局部变量数据 a ;
栈数据 0
1:
局部变量数据 a = 0;
栈数据 0
2:
局部变量数据 a = 0;
栈数据 0 | 0
3:
局部变量数据 a = 1;
栈数据 0 | 0
6:
局部变量数据 a = 0;
栈数据 0 | 0
Java 代码
int a = 0;
a = ++a;
JVM 指令
0: iconst_0 // 常量0进栈
1: istore_1 // 将栈顶数据赋值给第一个变量
2: iinc 1, 1 // 第一个变量值加1
5: iload_1 // 将第一个变量进栈
6: istore_1 // 将栈顶数据赋值给第一个变量
0:
局部变量数据 a ;
栈数据 0
1:
局部变量数据 a = 0;
栈数据 0
2:
局部变量数据 a = 1;
栈数据 0
5:
局部变量数据 a = 1;
栈数据 1 | 0
6:
局部变量数据 a = 1;
栈数据 1 | 0