00.Class 文件的组成结构
Class 文件的组成结构
- 无符号数: 无符号数属于基本数据类型,以
u1 、u2、u4、u8 分别代表1 个字节、2 个字节、4 个字节和8 个字节的无符号数,可以用它来描述数字、索引引用、数量值或utf-8 编码的字符串值。 - 表: 表是由多个无符号数或其他表为数据项构成的复合数据类型,名称上都以
_info
结尾。
Class 文件的头8 个字节
0xCAFEBABE
,它可以用来确定这个文件是否为一个能被虚拟机接受的
后
常量池
从第
- 与其他项目关联最多的的数据类型;
- 占用
Class 文件空间最大的数据项目; Class 文件中第一个出现的表类型数据项目。
常量池的开始的两个字节,也就是第
常量池中记录的是代码出现过的所有
- 字面量: 接近于
Java 语言层面的常量概念,包括- 文本字符串
- 声明为
final 的常量值
- 符号引用: 以一组符号来描述所引用的目标,包括
- 类和接口的全限定名
- 字段的名称和描述符
- 方法的名称和描述符
常量池中的每一项常量都通过一个表来存储。目前一共有
... [ tag=7 ] [ name_index ] ...
... [ 1位 ] [ 2位 ] ...
其中,
... [ tag=1 ] [ 当前常量的长度 len ] [ 常量的符号引用的字符串值 ] ...
... [ 1位 ] [ 2位 ] [ len位 ] ...
后面还没看,先简单介绍到这里……