字节码学习记录

Code

在这里插入图片描述
左边的序号指的是字节码指令位置,该字节码长度为16(即0-15)

LineNumberTable

字节码位置与代码行号对应表:
在这里插入图片描述
起始PC代表字节码指令位置,行号就是idea上的代码行号

LocalVariableTable

局部变量表(也称为本地变量表)
在这里插入图片描述

名字:指的是变量名称
描述符:指的是变量类型(例如args是String类型),大写L代表引用变量类型,大写I表示int类型
起始PC:指变量生效的字节码指令行号,通常指的是idea代码创建变量的行号的下一行(例如:num变量对应的字节码行号为11,对应的代码行号为15(见第一张图),即创建num变量的下一行)
长度:即局部变量生效的长度,args变量后面16字节码指令行都生效,test变量后面8行字节码指令生效,起始PC+长度 = 总的字节码长度

操作数栈的最大深度:

操作数栈使用数组方式实现
在这里插入图片描述

代码追踪

在这里插入图片描述

  1. bipush:将15放入操作数栈栈顶;此处的i指的是int类型,b表示byte类型(byte类型数值范围-128~127,如果超出这个范围,例如200,此时byte就是变成short,用s表示,即sipush)
  2. istore_1:将操作数栈栈顶的数据取出放入局部变量表的index为1的位置(为什么不是index为0呢?因为此处方法是实例方法,有this变量在index为0的位置存储着)
  3. iload_1:将局部变量表index=1位置的数据取出压入操作数栈,iload_2同理
  4. iadd:将操作数栈数据出栈后相加,相加后的结果压入操作数栈
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值