• 疯狂的 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
     
  • 相关阅读:
    六、Redis主从复制 
    五、AOF持久化
    四、RDB持久化
    三、数据类型
    二、redis的配置文件介绍
    第八章、堆
    九、补充
    八、Filter
    七、监听器和国际化
    六、JDBC
  • 原文地址:https://www.cnblogs.com/felixpan/p/4625123.html
Copyright © 2020-2023  润新知