一、class文件类型
class文件:是一组以8位字节为基础单位的二进制流,通过类似于结构体的伪结构存储数据,两种数据结构包括无符号数和表。
无符号数:属于基本的数据类型,以u1,u2,u4,u8代表一个字节,2个字节,4个字节,8个字节,无符号数可以用来描述数字,索引引用,数量值等。
表:多个无符号数或者其他表作为数据项构成的复合数据类型。
class文件包括:class版本号,次版本,主版本,常量池,访问标识,类索引,父类索引,接口索引集合,字段表集合,方法表集合,属性表集合。
前4个字节代表:class版本号,class文件是否可以被虚拟机接受。5和6字节代表:次版本号,7,8字节代表主版本号。
常量池:两大类常量,字面量和符号引用。字面量类似文本字符串,声明为fianl的常量值等;符号引用包括了三类常量:类和接口的全限定名,字段名称和描述符,方法名称和描述符,有14种常量项目,每一种都是一个表。
访问标志:用于识别一些类和接口信息,包括Class是类还是接口,是否为public类型,是不是abstract类型,是否被身边为final类型。
类索引,父类索引,接口索引:class文件用这3项数据来确定类的继承关系,类索引来确定类的全名,父类索引确定父类的全名,接口索引,确定类实现了那些接口。
字段表集合:用来表示接口和类中声明的变量,描述字段的各种属性如字段名称,字段修饰符,字段可见性,是实例变量还是类变量等。
方法表结合:和字段表集合类似,描述方法的一些属性。
属性表集合:
二、字节码指令