参考书籍:《深入分析Java Web技术内幕》《深入理解java虚拟机》
参考博客:https://blog.youkuaiyun.com/u010349169/article/category/2620885
1 总体结构
从上往下分别是:
- 魔数:表示该文件是一个class文件
- minor_version和major_version:次版本和主版本
- constant_pool_count和constant_pool:常量池,用于描述这个class文件的字面量信息。
- access_flags:访问标志
- this_class:类索引,必须是常量池中一个有效索引值
- super_class:父类索引,为0或者常量池中一个有效索引值,为0的时候表示无父类(java.lang.Object)
- interfaces_count和interfaces:接口信息
- fields_count和fields:字段信息
- methods_count和methods:方法信息
- attributes_count和attributes:属性信息,例如:deprecated、InnerClassed
2 class字节码采用类似C语言的结构体的伪结构,只有两种类型的数据结构:无符号数和表
2.1 无符号数:u1、u2、u4、u8表示1、2、4、8个字节
2.1 表:表由无符号数和其它表组成,习惯以_info结尾