美文网首页JVM
29-从字节码角度分析i = i++ 和 i = ++i

29-从字节码角度分析i = i++ 和 i = ++i

作者: 紫荆秋雪_文 | 来源:发表于2021-06-29 11:45 被阅读0次

一、分析i = i++

  • 代码
    public void method9() {
        int i = 10;
        i = i++;
    }
  • 字节码
0 bipush 10
2 istore_1
3 iload_1
4 iinc 1 by 1
7 istore_1
8 return
  • 字节码分析
  • 0 bipush 10:将常量10加载到操作数栈 image.png
  • 2 istore_1:将操作数栈顶数据存储到局部变量表下标为1的位置上 image.png
  • 3 iload_1:将局部变量表下标为1中的数据加载到操作数栈中 image.png
  • 4 iinc 1 by 1:将局部变量表下标为1中的数据+1 image.png
  • 7 istore_1:将操作数栈中栈顶数据存储到局部变量表中下标为1的位置上 image.png
  • 小结
    • 1、i的值依然是10
    • 2、i的值有那么一刻为11

二、分析i = ++i

  • 代码
    public void method10() {
        int i = 10;
        i = ++i;
    }
  • 字节码
0 bipush 10
2 istore_1
3 iinc 1 by 1
6 iload_1
7 istore_1
8 return
  • 0 bipush 10:将常量10加载到操作数栈中 image.png
  • 2 istore_1:将操作栈栈顶数据存储到局部变量表中下标为1的位置中 image.png
  • 3 iinc 1 by 1:将局部变量表中下标为1的数据+1 image.png
  • 6 iload_1:将局部变量表下标为1中的数据加载到操作数栈中 image.png
  • 7 istore_1:将操作数栈中栈顶数据存储到局部变量表下标为1的位置上 image.png
  • 小结

    • i的值为11

相关文章

网友评论

    本文标题:29-从字节码角度分析i = i++ 和 i = ++i

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