深入理解JVM : class文件结构之类信息描述、字段表、方法表(2)

本文深入探讨JVM的class文件结构,重点讲解类信息描述,包括访问信息、字段表和方法表。通过访问标志分析类的访问权限,如public和super。接着介绍字段表和方法表,阐述它们的结构和在class文件中的布局,详细解释了字段描述符和方法描述符的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接上篇文章

  class文件在常量池之后存放的依次是: 类信息描述字段表集合方法表集合以及类属性

  我们首先来看

类信息描述

  类信息描述的结构如下:

表1

    类信息描述

  类信息描述中,最开始的两个字节是访问标识符,访问标识符在后面的字段表以及方法表中还会用到。它的思想是一贯的。

  我们知道2个字节一共有16个比特,每个比特可以代表一个bool型值。访问标志正是利用这16个比特的0和1来给出“访问信息”的。访问信息有哪些?顾名思义,访问信息是描述访问权限等方面信息的。一共有8个,列表如下:

访问信息 表2

8个访问信息

  这里注意一下“值”和比特位之间对应关系的换算,例如:

  abstract : 0x0400

表示的是从右向左第11个比特为1。

  结合在上篇文章中编译的class文件,我们以16进制文本打开对应位置:

图1

    hex码文件

  下划线画出的0x00 21这两个字节就是紧接着常量池后面的类的“访问信息”,结合上面的表访问信息,我们可以看到,除了public和super标志位为1,其他的都为0。由此,我们可以得出这是一个public类型的类,未被声明为final,允许使用invokespecial字节码指令,非接口,未被声明为final型,非接口,非抽象型,为用户代码生成,非注解,非枚举。

  接下来两个字节是本类索引,这两个字节值0x00 04,指向的是常量池中的一个Class类型的常量。再接下来是父类索引,这两个字节0x00 05,同样指向常量池中的一个Class类型常量。对照上篇文章中生成的常量池:</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值