class檔案是一組以8位位元組為基礎單位的二進位製流,各個資料專案嚴格按照順序緊湊地排列在class檔案中,中間沒有分隔符。
class檔案格式:
型別名稱
數量描述
u4magic1魔數
u2minor_version
1次版本號
u2major_version
1主版本號
u2constant_pool_count
1常量池容量(計數從1開始)
cp_info
constant_pool
constant_pool_count-1
常量u2
access_flags
1訪問標誌
u2this_class
1類索引
u2super_class
1父類索引
u2inte***ces_count
1介面索引集合長度
u2inte***ces
inte***ces_count
介面索引集合
u2fields_count
1字段表長度
field_info
fields
fields_count
字段表集合
u2methods_count
1方法表長度
method_info
methods
methods_count
方法表集合
u2attributes_count
1屬性表長度
attribute_info
attributes
attributes_count
屬性表集合
1、魔數:0xcafebabe
2、版本號:版本號向下相容,低版本jdk不能執行高版本的class檔案。
3、常量池:常量池中主要存放兩類常量:字面量和符號引用。
字面量包括文字字串,宣告為final的常量值等。
符號引用包括:類和介面的全限定名,欄位的名稱和描述符,方法的名稱和描述符。
4、訪問標記:用於識別一些類或者介面層次的訪問資訊。
5、類索引、父類索引與介面索引:用於確定類、父類、介面的全限定名。
6、字段表:用於描述介面或者類中宣告的變數。
7、方法表:用於描述方法。
8、屬性表:用於描述專有屬性。
JVM之Class檔案結構
但是乙個類或者介面不一定生成class檔案,classloader直接生成。各個資料項按照嚴格的順序排列在class檔案中,沒有任何分隔符,當遇到需要占用8位位元組以上的資料項時,則會按照高位在前 或低位在前 方式分割為若干個8位位元組儲存。big endian little endian。clas...
4 類與結構
引言 類是c 的核心內容之一,當我們把所有的方面都分成一類又一類時,我們只需要在主程式中呼叫各個類的方法便可以輕易實現很多複雜的功能,物件導向程式設計是絕對離不開類的。類與結構有著差不多的結構和用法,本博文重點介紹類的使用,最後粗略介紹結構的特有用法。1 方法的宣告 modifiers return...
JVM學習筆記8 Class檔案結構
檔案結構魔數 版本常量池訪問符 類 超類 介面 字段方法 屬性 constant utf8 1 utf 8編碼的unicode字串 constant integer 3 int型別的字面值 constant float 4 float型別的字面值 constant long 5 long型別的字面值...