JVM 4 類檔案結構

2021-08-09 13:14:19 字數 1191 閱讀 7253

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型別的字面值...