这一次,彻底弄懂 Java 字节码文件!(11)
以此类推 , 最终都能通过十六进制字节码并结合字节码结构总表分析在常量池中找到对应的字节码内容 。
4.4 访问标志 访问标志信息包括该Class文件是类还是接口 , 是否被定义成public , 是否是abstract , 如果是类 , 是否被声明成final 。 通过上面的MyTest1源代码 , 我们知道该文件是类并且是public的 。 Access_Flag访问标志结构表:上述MyTest1类十六进制字节码中的位置:0x 00 21 这个 0x 00 21 是访问标志结构表中的 0x 00 20 和 0x 00 01 的并集 , 表示ACC_PUBLIC与ACC_SUPER 。 public class com .dskj .jvm .bytecode .MyTest1 ... flags : ACC_PUBLIC ACC_SUPER
访问标志之后的是This Class Name , 对应十六进制为0x 00 03
在常量池项目类型中查找: #3 = Class #22 //com/dskj/jvm/bytecode/MyTest1This Class Name之后的是Super Class Name , 对应十六进制为0x 00 04
在常量池项目类型中查找: #4 = Class #23 //java/lang/ObjectI nterfaces
接口包括两部分 , 第一个是interfaces_count(接口个数) , 第二部分interfaces(接口名) 。 当前这个类对应的十六进制:00 00 转换为十进制仍然是0 , 说明当前这个类是没有实现任何接口的 。 因此 , 这个interfaces接口表就不会再出现了 。 如果接口数量interfaces_count大于等于1的话 , 那么这个interfaces接口表是存在的 。 4.5 字段表 Fields 字段包括两部分 , 第一个是fields_count(字段个数) , 第二部分fields(字段名) 。 当前这个类对应的十六进制:00 01 转换为十进制值为1 , 说明这个类内部有一个字段 。 字段表集合 字段表用于描述类和接口中声明的变量 。 这里的字段包含了类级别变量以及实例变量 , 但是不包括方法内部声明的局部变量 。 字段表结构:推荐阅读
- 暴雪|暴雪新总裁刚上任3个月就离职,这一次,暴雪还有救吗
- 魔兽世界怀旧服|制霸全明星返场彻底凉了,上架第一天销量惨淡,玩家:有赛季皮肤足够了
- 明日方舟|明日方舟:六星近卫斯卡蒂现版本被完全撕卡 SP临光彻底让其失业
- 赛尔号|赛尔号衍生游戏精灵拟人形象 童年情怀彻底没了 但玩家有了新老婆
- 王者荣耀|王者荣耀:孙行者四款皮肤海报全部曝光,这一次倒是没让玩家失望
- 手机游戏|LOL手游传奇杯WT拿下冠军!意外惊现同阵容!版本答案彻底揭晓
- 极限国度|阴阳师川猿超鬼王活动攻略 活动过于阳间 爆肝删好友时代彻底终结
- 堡垒之夜|《堡垒之夜》国服关服,腾讯运营三年以彻底失败告终
- t1|T1上单鼠男账号被爆破,评论内容简单粗暴,一场BO5让他彻底成名
- 舰娘|碧蓝航线官方最大的强度笑话 未来可期的阿尔及利亚彻底卷没了