爱程序网

疯狂的 JAVA 后++

来源: 阅读:

一、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   操作结果赋值

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++
 

OUTPUT: 1
 

关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助