日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Class文件结构

發布時間:2025/4/14 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Class文件结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
java Class文件結構


? ? java虛擬機規范第二版,Java虛擬機規范第三版(java se 1.7版本),發現java虛擬機規范中java class的文件結構部分并沒有太大的變化。


java語言是跨平臺的,所謂一次編寫,到處運行。之所以是跨平臺的,就是java定義了一套與操作系統,硬件無關的字節碼格式,這個字節碼就是用java class文件來表示的,java class文件內部定義了虛擬機可以識別的字節碼格式,這個格式是平臺無關性的,在linux系統或者在windows系統上都是一致的。這個就好比html文件,我們定義好規范,這個系統只要去按照規范顯示出來里面的內容就好了。好比html就是class文件,瀏覽器就是虛擬機一樣,通過瀏覽器去執行html的渲染過程,我們無論是用手機,Windows系統,蘋果系統上網,顯示出來的內容都是一樣。 java虛擬機可以從class文件中加載預定義的字節碼,也可以從網絡,數據庫,消息文件中加載字節碼。


java class文件結構是基于字節流的,用unicode進行編碼。其實想想也可以完全用xml文件表示,只不過用xml表示的字節碼文本體積可能會很大,占用空間,同時解析起來比較耗時,而且很容易被人為修改,導致未知錯誤。下面是class文件的內部結構




ClassFile {?
u4 magic;?
u2 minor_version;?
u2 major_version;?
u2 constant_pool_count;?
cp_info constant_pool[constant_pool_count-1];?
u2 access_flags;?
u2 this_class;?
u2 super_class;?
u2 interfaces_count;?
u2 interfaces[interfaces_count];?
u2 fields_count;?
field_info fields[fields_count];?
u2 methods_count;?
method_info methods[methods_count];?
u2 attributes_count;?
attribute_info attributes[attributes_count];?
}
1


U4 代表由無符號四個字節組成


u4 magic :是一個固定的數值,java虛擬機里面稱為魔數 ,主要是用來標識是否為java虛擬機所支持的文件結構,目前是0xCAFEBABE


u2 minor_version; u2 major_version; 代表次版本號和主版本號


u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; 這里面代表常量池個數以及常量池信息


u2 access_flags : 代表class訪問標記,例如:public protected


u2 this_class : 代表這個類的名稱 例如 java.lang.Object


u2 super_class : 代表父類名稱


u2 interfaces_count; u2 interfaces[interfaces_count]; 實現的接口格式以及接口類名


u2 fields_count; field_info fields[fields_count]; 字段個數以及字段信息


u2 methods_count; method_info methods[methods_count]; 方法個數以及方法信息


u2 attributes_count; attribute_info attributes[attributes_count]; java class文件內部屬性信息,和java語言定義的屬性沒有關系,純粹就是給java虛擬機用的




以上都是java虛擬機規范中定義的class文件內部結構信息,可以參考 Java虛擬機規范 (Java SE 7版)


每種結構又都定義了自己的結構信息,例如:常量池結構,字段信息,方法信息,類信息,這幾種結構之間又都互相引用,下面這幅圖簡要介紹了java class文件的內部結構信息

其中常量池的里面的信息最為復雜,java虛擬機運行時刻的所有信息都是從常量池來獲取的,常量池定義了一下幾種結構




總結

以上是生活随笔為你收集整理的Java Class文件结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。