java字节码解析i++和++i的区别

本文通过字节码分析了Java中`i++`和`++i`的区别。`i++`先使用当前值再加1,而`++i`先加1再使用,导致两者在打印时输出不同。字节码流程揭示了这一差异,对于理解Java运算符的工作原理有所帮助。
摘要由CSDN通过智能技术生成

代码

在这里插入图片描述
问:++i和i++打印出来的都是几?

相信大多数人都知道打印出来的是几,分别的9和8,原因是什么呢?

字节码

i++的字节码code
流程如下:
1.bipush 8是往栈里面放入一个8
2.istore_1就是把栈里面的8弹出赋值给下标为1的变量(也就是i,args是下标为0的变量)
3.iload_1再将变量下标为1的也就是i放到栈中
4.iinc 1 by 1将变量数组下标为1的变量加1(此时是在局部变量表中加1,i变成了9)
5.istore_1 将栈中的i弹出,返回。
此时弹出的是栈中的i,此时栈中的i值为8,所以i++打印的是8.

++1的字节码code

流程如下:
1.bipush 8 将8放到栈中
2.istore_1 将栈中的8弹出赋值给i
3.iinc 1 by 1 给变量下标是1的变量进行加1,此时i为9
4.iload_1 将变

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值