第6章 类文件结构

2020-02-13  本文已影响0人  MikeShine

写在前面

这一章不是重点,我们主要来了解一下 6.3 小节,关于 Class 类文件结构的部分。明白 一个 Class文件(字节码文件)到底包含了哪些内容。


6.3 类文件结构

Class 文件基本结构

Class 文件是一组以 8 字节为基础单位的二进制流。各种数据紧凑排列,没有分隔符,没有空隙。
只存 无符号数

具体分为7个部分:魔数与文件版本、常量池、访问标志、索引、字段表、方法表、属性表

1. 魔数与Class 文件的版本

2. 常量池

常量池位置
常量池中数据类型

3. 访问标志

常量池结束后,紧跟着两个字节是访问标志(access_flags)。识别一些类或者接口层次的访问信息。
比如:这个类是 class 还是 interface;是 public 还是 abstract 等。

4. 类索引、父类索引、接口索引集合

三者各占2个字节。
Class 文件用这6字节的索引来确定 这个类 的继承关系。

5. 字段表集合

字段(field):包含类级变量(static)和 实例级变量;但是bu包含方法内部定义的局部变量。


字段表格式

6. 方法表集合

跟字段表集合的结构一致。依次是访问标志(access_flags),名称索引(name_index),描述符索引(descriptor_index),属性表集合(attributes)

7. 属性表集合

Class 文件、字段表、方法表都可以含有自己的属性表集合。用于描述某些场景的专有信息

不是很懂这一部分,知道有这个东西就行了。

上一篇 下一篇

猜你喜欢

热点阅读