一、x++
所以执行完x++之后,局部变量区的x值,直接为2;
iinc: 指定int型变量增加指定的值,注意是变量,我的解释是iinc直接对局部变量操作,而不是对操作栈进行操作! ★★★★
OUTPUT: 2
二、x = x++ + x
2、分解:
x = x++ + x;
a. 1++ 赋值给局部变量的x
b. 1 + 2 将局部变量区的2压栈
c. x = 3 操作结果赋值
c. x = 3 操作结果赋值
2、内存示意图
OUTPUT: 3
三、x = x + x++
1、注意 2,3,4 操作和 二中的区别:
二中由于 x++ 在加法运算前面,所以会先iinc, 然后在iload;
三中由于 x++ 在加法运算后面,所以对加法运算而言可以取到他想要的两个操作数,因此先分别获得两个相同的加法操作数;
2、分解:
x = x + x++;
a. 1 + 1 压入操作栈
b. 1++ 局部变量区变为2
c. x = 2 操作栈赋值给局部变量 x
OUTPUT: 2
四、x = x++