目录
- 1. 说明
- 2. 主要部分
- 2.1 魔数
- 2.2 版本信息
- 2.3 常量池
- 2.4 访问标志
- 2.5 类索引、父类索引和接口索引数组
- 2.6 字段表
- 2.7 方法表
- 2.8 属性
1. 说明
- 1. .class 文件是 Java 编译器编译 Java 源代码文件(.java 文件)后生成的字节码文件。
- 2.这些文件包含了 Java 虚拟机(JVM)可以执行的所有信息,而不需要源代码。
- 3…class 文件是 Java 平台无关性的关键,因为它们包含了可以在任何支持 JVM 的硬件和操作系统上运行的字节码。
- 4.具体的细节和格式可能会根据 Java 版本的不同而有所变化。
2. 主要部分
2.1 魔数
- 1.Magic Number。
- 2.这是一个固定值(0xCAFEBABE),用于确定文件是否是一个有效的 Java 类文件。
2.2 版本信息
- 1.Version Information。
- 2.包括主版本号和次版本号,表示编译该类的 JDK 版本。
2.3 常量池
- 1.Constant Pool。
- 2.这是一个表,包含了类文件中引用的所有字符串常量、类或接口名、字段名和其他常量。
- 3.常量池是 .class 文件的一个重要组成部分,因为它包含了类的元数据信息。
2.4 访问标志
- 1.Access Flags。
- 2.这些标志表示类的访问权限(如 public、final、abstract 等)和其他属性(如是否是接口、是否是枚举等)。
2.5 类索引、父类索引和接口索引数组
- 1.这些索引指向常量池中的条目,分别表示类的全限定名、父类的全限定名以及该类实现的接口列表。
2.6 字段表
- 1.Field Table。
- 2.用于描述类的字段(成员变量),包括字段名、类型、访问修饰符等信息。
2.7 方法表
- 1.Method Table。
- 2.用于描述类的方法,包括方法名、参数类型、返回类型、访问修饰符以及方法的字节码。方法的字节码是 JVM 执行该方法时所需的具体指令。
2.8 属性
- 1.Attribute Table。
- 2.属性表可以出现在类文件、字段表和方法表的任何位置。它们用于存储一些附加信息,如类的源代码行号、异常表、局部变量表等。