類文件結構
阿新 • • 發佈:2018-06-27
字段表 const line bsp 計數 包含 first interface fir 一. 類文件結構
Class文件格式采用一種類似於C語言結構體的偽結構來存儲數據。
這種偽結構中只有兩種數據類型:無符號數和表。
無符號數:基於基本的數據類型,以u1、u2、u4、u8來分別代表1個字節、2個字節、4個字節、8個字節的無符號數。可以用來描述數字、索引引用、數量值或按UTF-8編碼構成字符串值。
表:由多個無符號數或其他表作為數據項構成的復合數據類型。,所有表都習慣性地以"_info"結尾。整個Class文件本質上就是一張表。
Class文件格式:
類型 | 名稱 | 數量 | 說明 | 值 | 作用 |
u4 | magic | 1 | 魔數 | 0xCAFEBABE | 確定這個文件是否為一個能被虛擬機接受的Class文件 |
u2 | minor_version | 1 | 次版本號 | 高版本的JDK向下兼容以前版本的Class文件 | |
u2 | major_version | 1 | 主版本號 | ||
u2 | constant_pool_count | 1 | 常量池容量計數值 | 容量計數是從1而不是0開始的 | |
cp_info | constant_pool | constant_pool_count-1 | 常量池 | 存放字面量和符號引用,常量池中的每一項常量都是一個表 | |
u2 | access_flags | 1 | 訪問標誌 | 識別一些類或接口層次的訪問信息 | |
u2 | this_class | 1 | 類索引 | 用於確定這個類的全限定名 | |
u2 | super_class | 1 | 父類索引 | 用於確定這個類的父類的全限定名(除Object外所有類的父類索引都不為0) | |
u2 | interfaces_count | 1 | 接口索引數值 | ||
u2 | interfaces | interfaces_count | 接口索引集合 | 用來描述這個類實現了哪些接口 | |
u2 | fields_count | 1 | |||
field_info | fields | fields_count | 字段表 | 用於描述接口或者類中聲明的變量(不包含方法內部聲明的局部變量) | |
u2 | methods_count | 1 | |||
method_info | methods | methods_count | 方法表 | ||
u2 | attributes_count | 1 | |||
attribute_info | attributes | attributes_count | Class文件、字段表、方發表都可以攜帶自己的屬性表集合、以用於描述某些場景專有信息 |
類文件結構