美文网首页
i++的深入了解

i++的深入了解

作者: justlinzhihe | 来源:发表于2018-03-16 13:19 被阅读0次
      public static void main(String[] args) {
            int j = 0;
            j = j++;
        }
    

    这段代码的结果是0.从字节码指令的角度来分析下。

    在讲字节码之前,先简单的了解下Java栈,在JVM中有这么一个数据结构叫Java栈,当线程启动的时候,会分配一块内存当做该线程的栈,每个栈由一系列的栈帧组成。每个栈帧对应一个方法,当线程执行方法时,就是栈帧出栈入栈的过程。

    每个栈帧包含三部分数据:本地变量(参数+方法内的变量)、操作数栈和其它数据,本文主要涉及本地变量和操作数栈。

    1.普通的赋值操作。

    image.png

    0234是a,b变量的初始化操作
    5 iload_2 把b变量的值放入栈
    6 istore_1 把栈的值赋值给变量a

    2.i=i++

    image.png

    2 iload_1 把变量i的值入栈
    3 iinc 1 by 1 遍量i自增 i=1
    6 istore_1处栈,把栈中的值赋值给变量i i=0

    相关文章

      网友评论

          本文标题:i++的深入了解

          本文链接:https://www.haomeiwen.com/subject/dkwlqftx.html