概念
- 对于进制类的字节码文件,计算机比人类更容易理解,而我们需要的就是制定文件的规则
- Class File Format,就是Class文件制定给JVM的规则
- idea字节码查看工具:sublime
基本核心参数说明:
- Magic Number
○ 魔术编号,用来标识这个是一个什么样的文件,比如Java的文件开头就是 cafe babe - Minor Version
○ 版本小号 - Major Version
○ 版本主号 - constant_pool_count
○ 表示的是常量池里面有多少内容 - constant_pool
○ 长度为 constant_pool_count - 1 的表,因为数组是从0开始,常量池是从1开始,所以要减1
○ 从1开始的原因:因为它有一个0存在,表示不指向任何常量池的一项,就可以用0表示,保留了一种可能性 - access_flags
○ 整个class文件的修饰符
○ 例如整个class,你是用public修饰还是用privote修饰,这一类的标识 - this_class
○ 当前类叫什么名字 - super_class
○ 父类叫什么名字 - interfaces_count
○ 实现了哪些接口 - interfaces
○ 具体实现了哪些接口,接口的索引 - fields_count
○ 有哪些属性 - fields
○ 具体有哪些属性 - methods_count
○ 有哪些方法 - methods
○ 具体有哪些方法
○ 也就是方法的各种结构,标识,名字的索引,附加属性等 - attributes_count - u2
○ 附加属性的有哪些 - attributes
○ 附加属性的具体信息
○ 最重要的是方法表,也就是方法的字节码指令,JVM会先读一些指令进来,然后根据指令去看自己的指令表,找到执行后再来看方法
fields属性参数
access_flags: 这个属性的修饰符,有没有static?有没有final?
name_index: 名称的索引
descriptor_index: 描述符,到底是什么类型的
attributes: 附加的一些属性,不一定有