常量池 可以理解為Class文件之中的資源倉庫,他是Class文件結構中與其他項目關聯最多的數據類型,也是占用Class文件空間最大的數據項目之一 訪問標誌 在常量池結束後,緊接著的倆個位元組代表訪問標誌(access_flags),這個標誌用於識別一些類或者介面層次的訪問信息。包括:這個Class是 ...
常量池
可以理解為Class文件之中的資源倉庫,他是Class文件結構中與其他項目關聯最多的數據類型,也是占用Class文件空間最大的數據項目之一
訪問標誌
在常量池結束後,緊接著的倆個位元組代表訪問標誌(access_flags),這個標誌用於識別一些類或者介面層次的訪問信息。包括:這個Class是類還是介面是否定義為public類型,是否定義為abstract類型等等。
類索引、父類索引與介面索引集合
類索引和父類索引都是一個u2類型的數據,而介面索引集合是一組u2類型的數據集合,Class文件中由著三項數據來確定這個類的繼承關係。
欄位表集合
欄位表用於描述介面或者類中生命的變數。欄位包括累級變數,以及實例變數,但不包括在方法內部聲明的局域變數。
方法表集合
放發表的結構如同欄位表一樣,依次包括了訪問標誌、名稱索引、描述符索引、屬性表集合跡象。
方法里的Java代碼,經過編譯器編譯成位元組碼指令後,存放在方法屬性表集合中的一個名為“Code”的屬性裡面,屬性表作為Class文件格式中最具擴展性的一種數據項目。
屬性表集合
在Class文件、欄位表、方法表內都可以攜帶自己的屬性表集合。
位元組碼指令簡介
Java虛擬機的指令有一個位元組長度的,代表著某種特定操作含義的數字(稱作操作碼)以及跟隨其後的0至多個代表此操作所需的參數而構成。
小結
Class文件時Java虛擬機執行引擎的數據入口,也是Java技術體系的基礎構成之一。