JVM学习-彻底搞懂Java自增++

从字节码角度分析i++和++i的区别

 public void method6() {
        int i =10;
        i++;     //在局部变量表上直接加1
    }

在这里插入图片描述

public void method7() {
        int i =10;
        ++i;         //字节码同i++
    }

在这里插入图片描述

public void method8() {
        int i = 10;
        int a = i++;   //通过下图可以看出先将局部变量表中的值push到操作数栈,然后局部变量表索引1的位置加1,a = 10

        int j = 20;
        int b = ++j;  //通过下图可以看出先局部变量表索引3的位置加1,然后将局部变量表中索引3的值push到操作数栈,b = 11
    }

在这里插入图片描述

  @Test
    public void method9() {
        int i = 10;
        i = i++;             //先将局部变量表1的位置的值10,push到操作数栈,然后局部变量表1的值加1,然后istore_1又将操作数栈10的值写回局部变量表1的位置
        System.out.println(i);   //最终i的值为10
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值