i=i++

int i=0;
i=i++;

解释下为什么i=0

 

javap  -v  字节码文件名   查看Class指令  得到虚拟机的操作码如下:

    0: iconst_0     //将一个int型常量 0 压入栈
    1: istore_1     //从栈顶弹出int型的值,然后将其存储到局部变量表1的位置(0的位置都是被this占用)
    2: iload_1      //将局部变量表位置1处的int型的值压入栈
    3: iinc    1, 1 //局部变量表位置1处的局部变量自增1
    6: istore_1     //从栈顶弹出int型的值,然后将其存储到局部变量表1的位置
 

附上一张图帮助理解:

 

posted @ 2022-04-16 21:46  ENU  阅读(73)  评论(0编辑  收藏  举报