1. 程式人生 > >類文件結構

類文件結構

字段表 const line bsp 計數 包含 first interface fir

一. 類文件結構

Class文件格式采用一種類似於C語言結構體的偽結構來存儲數據。

這種偽結構中只有兩種數據類型:無符號數和表

無符號數:基於基本的數據類型,以u1、u2、u4、u8來分別代表1個字節、2個字節、4個字節、8個字節的無符號數。可以用來描述數字、索引引用、數量值或按UTF-8編碼構成字符串值。

:由多個無符號數或其他表作為數據項構成的復合數據類型。,所有表都習慣性地以"_info"結尾。整個Class文件本質上就是一張表。

Class文件格式:

類型名稱數量說明作用
u4magic1魔數0xCAFEBABE確定這個文件是否為一個能被虛擬機接受的Class文件
u2minor_version1次版本號
高版本的JDK向下兼容以前版本的Class文件
u2major_version1主版本號
u2constant_pool_count1常量池容量計數值
容量計數是從1而不是0開始的
cp_infoconstant_poolconstant_pool_count-1常量池
存放字面量和符號引用,常量池中的每一項常量都是一個表
u2access_flags1訪問標誌
識別一些類或接口層次的訪問信息
u2this_class1類索引
用於確定這個類的全限定名
u2super_class1父類索引
用於確定這個類的父類的全限定名(除Object外所有類的父類索引都不為0)
u2interfaces_count1接口索引數值

u2interfacesinterfaces_count接口索引集合
用來描述這個類實現了哪些接口
u2fields_count1


field_infofieldsfields_count字段表
用於描述接口或者類中聲明的變量(不包含方法內部聲明的局部變量)
u2methods_count1


method_infomethodsmethods_count方法表

u2attributes_count1


attribute_infoattributesattributes_count

Class文件、字段表、方發表都可以攜帶自己的屬性表集合、以用於描述某些場景專有信息


類文件結構