class文件的大致结构从前到后

名称 用途 大小 补充说明
魔数 (用来验证是不是虚拟机合适的class文件 4字节 因为后缀名可以随意改动,所以使用魔数也是出于安全的考虑
版本号 (用来标识该class文件能够在哪个版本jdk运行) 4字节 前2字节是次版本号,后2字节是主版本号 版本高的jdk可以加载版本低的class文件
常量池 (class文件的资源仓库) 不定 主要存放字面量和符号引用,字面量就是文本字符串和申明为final的常量,符号引用包括了类和接口的全限定名,字段名称和描述符。方法名称和描述符,常量池的容量计数从1开始。因为常量池0的位置用来存储常量池的容量
访问标志 (定义是不是类,是不是public 2字节 就是判断一个class的访问标志,是否final,是否public
类索引 确定本类的全限定名 2字节
父类索引 确定父类的全限定名 2字节
接口索引计数器 统计接口的数量 2字节
接口索引集合 接口们的全限定名 接口计数器*2
字段表集合 描述申明的变量包括类级变量实例变量不包括局部变量 不定 不会列出超类或父接口的继承的字段
方法表集合 描述申明的方法包括访问标志,名称索引,描述符索引,属性表索引,属性表集合

木木甫
494 声望23 粉丝

已工作的应届生。希望能和大家多多交流技术问题,