class檔案的格式

2021-07-02 13:23:50 字數 633 閱讀 1092

每個class檔案都對應唯一乙個類或介面的定義資訊,但類或介面不一定定義在檔案裡(類或介面通過類載入器直接生成)。

每個class檔案都是由8位元組為單位的位元組流組成,所有16,32,64位長度的資料將被構造成2,4,8個8位元組單位來表示。多位元組資料項總是按照big-endian的順序進行儲存。用項item來描述類結構格式的內容,class檔案中,各項按照嚴格順序連續存放的,之間無任何填充或對齊作為各項間的分割符號。

class檔案格式採用一種類似c語言結構體的偽結構來儲存資料

在描述同一型別但數量不定的多個資料時,可使用前置容量計數器加若干個連續的資料項形式--型別的集合

訪問標誌:常量池結束之後,2個位元組代表訪問標誌,用於識別一些類或者介面層次的訪問資訊。判斷定義final,abstract,public等等;字段資料型別;欄位名稱。

索引:確定類的繼承關係

字段表:描述介面或類中宣告的變數。字段包括類級變數和例項級變數,不包括方法內部宣告的區域性變數。字段訪問標誌:public,private,protected,static,final,volatile,transient,enum

方法表:訪問標誌,名稱索引,描述符索引,屬性表集合

屬性表:class檔案,字段表,方法表都可帶自己的屬性表,以描述某些場景專有資訊。

Class格式(三)訪問標誌

定位到位元組碼,如圖所示。接下來占用的兩個位元組就是訪問標誌,這個標誌用於識別一些或介面層次的訪問資訊,包括 這個class是類還是介面 是否定義為public型別 是否定義為abstract型別 如果是類的話,是否被宣告為final,等等。具體的標誌五個一標誌的含義如下表 通過組合的方式組合在一起...

class檔案結構

000000 cafebabe 000004 0000 000006 0032 識別符號 magic 魔數 表示該檔案是標準的class檔案,jvm通過這4個位元組判斷該檔案是不是乙個class檔案 次要版本號 主要版本號 0032 jdk1.5 0033 jdk1.6 0034 jdk1.7 首先...

Class檔案詳解 2

今天繼續分析class檔案的結構。上次讀取了constant pool,緊接著是這個類或介面的access flags,jvm定義的關於class或inte ce的access flags有 private static short acc public 0x0001 private static ...