1.魔数与class文件版本等
2.常量池
常量池可以理解为Class文件之中的资源仓库。
常量池中主要存放两大类常量:字面量和符号引用。
字面量 | 文本字符串、声明为final的常量等 |
符号引用 | 类和接口的全限定名,字段的名称和描述符,方法的名称和描述符 |
描述符:描述字段的数据类型、方法的参数列表(包括数量,顺序以及类型)和返回值
3.字段信息(字段表集合):描述类或接口中声明的变量,不包括在方法内部声明的变量,也不包括从超类或父接口中继承而来的字段
(1)字段的修饰符
pulibc,protected,private,static,final,volatile,transient
(2)字段数据类型(描述符索引)
无法固定,所以引用的常量池中的常量来描述。
(3)字段名称(字段名称索引)
无法固定,所以引用的常量池中的常量来描述。
(4)属性表集合
4.方法信息(方法表集合):
(1)方法修饰符
去掉了volatile和transient,增加了synchronized,native,abstract,strictfp等
(2)方法名称索引
(3)描述符索引
(4)属性表集合
Code:方法体中的代码经过编译器编译成字节码指令后,存放在Code属性中
5.类信息
(1)类索引
确定这个类的全限定类名
(2)父类索引
确定这个类的父类的全限定类名
(3)接口索引集合
确定这些类实现了哪些接口
(4)访问标识
包括:这个Class是类还是接口,访问修饰符public final abstract 等等。