疯狂的 JAVA 后++

时间:2023-03-09 07:46:10
疯狂的 JAVA  后++

一、x++

疯狂的 JAVA  后++
所以执行完x++之后,局部变量区的x值,直接为2;

iinc: 指定int型变量增加指定的值,注意是变量,我的解释是iinc直接对局部变量操作,而不是对操作栈进行操作! ★★★★

OUTPUT: 2

二、x = x++ + x

疯狂的 JAVA  后++
2、分解:      
      x = x++ + x;
      a. 1++    赋值给局部变量的x
      b. 1 + 2  将局部变量区的2压栈
      c. x = 3   操作结果赋值
2、内存示意图
疯狂的 JAVA  后++

疯狂的 JAVA  后++

OUTPUT: 3


 三、x = x +  x++
疯狂的 JAVA  后++
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++
 疯狂的 JAVA  后++

OUTPUT: 1