中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

Java類文件的基本結構
來源:易賢網 閱讀:989 次 日期:2015-04-10 15:53:13
溫馨提示:易賢網小編為您整理了“Java類文件的基本結構”,方便廣大網友查閱!

為旅行而生

Java類文件(.class文件)是一個為已編譯Java程序仔細定義的格式。Java源代碼被編譯成能夠被任何JVM加載和執行的類文件。在被JVM加載之前,類文件可能是由網絡傳輸而來。

類文件是獨立于底層平臺的,所以適用于更多的地方。它們由簡潔的JVM字節碼組成,這樣就能輕裝上陣。類文件常常被壓縮,以極快的速度通過網絡,到達世界各地的JVM。

類文件里有什么?

Java類文件包含JVM需要知道的關于一個Java類或接口的一切。按照它們的出現次序,主要的部分有:魔法數(magic),版本號(version),常量池(constant pool),訪問標示符區(access flags),當前類區(this class),超類區(super class),父接口區(interfaces),字段區(fields),方法列表區(methods),屬性區(attributes)。

保存在類文件中的信息經常在長度上有變化,所以信息的實際長度在被加載之前不能被預測。例如,在方法區里的方法數目,類與類之間是不相同的,這取決于源代碼中定義的方法個數。類文件中,這些信息的實際大小或長度,被安排在信息內容之前。這樣,當類文件被JVM加載時,可變信息的長度首先被讀取。一旦JVM知道信息的大小,它就能正確的讀取實際的信息內容。

類文件中,不同的相鄰信息之間通常沒有空白或填充字符;一切都以字節(byte)邊界對齊。這使得類文件很小,適合網絡傳輸。

為了讓JVM在加載類文件時,知道需要什么信息以及從哪里可以取得所需信息,類文件的各個組成部分的次序是嚴格定義的。例如,每個JVM都知道類文件的前8個字節由魔法數和版本號組成,常量池從第9個字節開始,訪問標示符區緊跟在常量池后面。但是,因為常量池的長度是可變的,在讀取完常量池之前,JVM是不知道訪問標示符區具體從什么地方開始。一旦讀取完常量池,JVM就知道接下來的2個字節就是訪問標示符區。

魔法數(Magic)和版本號(Version)

每個類文件的開始4個字節都是0xCAFEBABE。這個神奇的數字讓Java類文件更容易識別,因為類文件以外的文件幾乎不可能也以這四個相同的字節開頭。之所以稱之為魔法數,是因為它可以被文件格式設計者們從帽子里拉出來(??)。對它僅有的要求是,不能被現實已有的文件格式占用。根據最初Java團隊主要成員之一的Patrick Naughton所說,遠在“Java”被當作Java語言的名稱之前,這個神奇的數字就已經被選好了。我們當時在尋找一個有趣,獨特并且很容易記住的數字。0xCAFEBABE作為漂亮的Peet’s Coffee的咖啡師的代稱,能預示未來Java語言的名字,這完全是一個巧合。

類文件接下來的4個字節包含了大版本號(major version)和小版本號(minor version)。這些數字標識了特定類文件使用的類文件格式,讓JVM可以驗證類文件是否可以被載入。每個JVM都有一個它能載入的最大版本號,拒絕加載大于最大版本號的類文件。

常量池(Constant Pool)

類文件在常量池中保存與類或接口關聯的常量。常量池中能看到的部分常量是字符串字面值(literal strings),final變量的值(final variable values),類名,接口名,變量名和變量類型,方法名和方法簽名(method names and signatures)。方法簽名由方法返回值類型(return type)和一組參數類型(argument types)組成。

常量池被組織成一個元素長度可變的數組。每個常量占據數組中的一個元素。在整個類文件中,常量通過指示它們在數組中位置的整型索引來引用。第一個常量的索引值是1,第二個是2,以此類推。常量池數組的元素個數寫在常量池的前面,所以在加載類文件時,JVM知道它需要加載多少常量。

常量池中每個元素以指明自己類型的單字節標簽(tag)開始。一旦JVM看到這個標簽,就能知道接下來會遇到什么類型的常量。例如,如果看到一個表示字符串的標簽,JVM會認為接下來2個字節就是字符串的長度,然后就是“長度”個字節組成的字符串。

在本文剩下的部分,我有時會用constant_pool[n]表示常量池數組的第n個元素。從常量池組織的像個數組來說,這是有道理的;但是請記住,這些元素具有不同的大小和類型,并且第一個元素的索引是1。

訪問標識符區(Access Flags)

常量池之后的2個字節就是訪問標示符,它表明該文件定義的是類還是接口;該類或接口是公開的(public)還是抽象的(abstract);如果是類,該類是不是final的。

當前類區(This class)

接下來2個字節是當前類區,它是常量池數組的索引。被當前類引用的常量constant_pool[this_class],包含兩部分:單字節標簽(tag)和雙字節名稱索引(name index)。標簽等于CONSTANT_Class,一個表示本元素中包含類或接口信息的值。constant_pool[name_index]是一個包含類或接口名的字符串常量。

當前類部分稍稍揭示了常量池是怎么被使用的。當前類區本身只是一個常量池的索引。當JVM查找constant_pool[this_class]時,它找到一個用標簽表明自己是一個CONSTANT_Class得元素。JVM知道CONSTANT_Class元素在標簽(tag)之后,總是有一個叫名稱索引(name index)的常量池雙字節索引。然后它查找constant_pool[name_index],得到包含類或接口名的字符串。

超類區(Super class)

當前類區之后是超類區,也是2個字節的常量池索引。constant_pool[super_class]是CONSTANT_Class元素,它指向當前類所直接繼承的超類名。

接口區(Interfaces)

接口區開頭的2個字節,表示文件所定義的類(或接口)實現的接口數目。緊接著是一個數組,它包含了類所實現的每一個接口在常量池中的索引。

每個接口都是常量池中的CONSTANT_Class元素,它指向接口名。

字段區(Fields)

字段部分,以表示該類或接口包含的字段數的2個字節開始。字段是一個實例變量,或者是類或接口的類變量。接下來是一個以可變長結構為元素的數組,一個結構一個字段。每個結構都包含一個字段的相關信息,如字段名,字段類型,如果是final變量,還包括字段值。部分信息在結構當中,另一部分在常量池中由結構所指向的位置。

這部分僅有的字段,都是由定義在該類文件中的類或接口聲明的變量;繼承自超類或接口的字段不在此列。

方法區(Methods)

方法部分,以表示類或接口中方法數目的2字節開始。這個數目,只包含當前類顯式定義的方法,不包括繼承自超類的方法。數目之后是方法本身。

表示每個方法的結構包含方法相關的幾條信息,包括方法描述符(method descriptor,包括返回值類型和參數列表),方法本地變量需要的棧字(stack words)數,方法操作數棧(operand stack)需要的最大棧字數,方法捕獲的異常表,字節碼序列和行號表。

屬性區(Attributes)

排在最后的是屬性區,它提供定義在類文件中的特定類或接口的一般信息。屬性區以2字節的屬性數目開始,然后是屬性本身。比如一個表示源碼屬性的屬性:它表示當前類被編譯而來的源文件名。JVM會悄悄地忽略任何它們識別不了的屬性。

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:Java類文件的基本結構
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美日韩国产一中文字不卡 | 国产精品欧美风情| 亚洲黄色大片| 欧美xart系列高清| 亚洲毛片视频| 国产精品高清网站| 欧美制服第一页| 在线看视频不卡| 欧美国产日韩精品免费观看| 日韩视频在线观看免费| 国产精品久久久久77777| 亚洲欧美日韩高清| 影院欧美亚洲| 欧美三级网址| 久久人人爽人人爽| 中文av一区二区| 国产一区二区三区网站| 欧美—级a级欧美特级ar全黄| 亚洲先锋成人| 影音先锋欧美精品| 国产精品视频久久| 欧美高清在线观看| 久久精品国产亚洲一区二区三区| 亚洲美女啪啪| 激情五月综合色婷婷一区二区| 欧美高清在线观看| 久久国产精品网站| 亚洲综合三区| 日韩视频免费观看| 揄拍成人国产精品视频| 欧美日韩午夜| 欧美高清hd18日本| 久久乐国产精品| 亚洲免费在线视频一区 二区| 亚洲高清资源| 国内精品久久久久影院薰衣草| 欧美精品日韩www.p站| 久久成人免费电影| 亚洲欧美久久久| 亚洲深夜激情| 日韩午夜免费视频| 亚洲福利专区| 在线免费观看欧美| 国产自产2019最新不卡| 国产精品女主播一区二区三区| 欧美人在线观看| 欧美成人综合网站| 欧美ed2k| 欧美激情中文字幕在线| 欧美激情aaaa| 欧美日韩国产一中文字不卡| 欧美国产激情| 欧美日本免费一区二区三区| 欧美高清视频在线观看| 男女精品网站| 欧美精品一区二区三区蜜桃| 欧美成人高清视频| 蜜月aⅴ免费一区二区三区 | 久久亚洲捆绑美女| 久久精品视频va| 久久久久久久久蜜桃| 久久高清国产| 久久露脸国产精品| 免费日韩成人| 欧美日韩成人网| 国产精品久久久久久久7电影 | 久久综合久久美利坚合众国| 久久久国产精品亚洲一区| 久久精品成人一区二区三区| 久久久久久久综合| 欧美成人精品三级在线观看 | 欧美香蕉视频| 国产精品网红福利| 很黄很黄激情成人| 亚洲精品乱码久久久久久按摩观 | 久久久久久久成人| 蜜月aⅴ免费一区二区三区| 欧美激情精品久久久久| 欧美激情精品久久久| 欧美视频一区二区三区| 国产午夜精品一区二区三区欧美 | 91久久在线| 亚洲色图自拍| 欧美在线亚洲在线| 免费日韩一区二区| 国产精品国产三级国产专区53| 国产精品实拍| 亚洲国产乱码最新视频| 中日韩高清电影网| 久久成人免费网| 欧美日韩国产123区| 国产精品午夜电影| 亚洲国产高清自拍| 亚洲欧美美女| 欧美国产视频日韩| 国产美女精品在线| 亚洲另类在线视频| 久久久福利视频| 欧美性久久久| 亚洲国产精品久久久久婷婷老年 | 国产一区二区观看| 日韩视频在线一区二区| 久久精品1区| 欧美日韩亚洲在线| 亚洲福利视频在线| 久久九九电影| 国产精品伦一区| 日韩视频在线观看一区二区| 久久精品国产精品 | 亚洲一线二线三线久久久| 久久久久久一区二区| 欧美日韩免费观看一区三区| 激情五月***国产精品| 亚洲欧美不卡| 欧美巨乳波霸| 在线国产欧美| 久久精品女人的天堂av| 国产精品视频最多的网站| 99精品欧美一区| 欧美国产另类| 亚洲国产精品久久久久秋霞不卡| 欧美一二三区精品| 国产精品一二三视频| 亚洲小说区图片区| 欧美视频中文字幕在线| 日韩小视频在线观看| 欧美丰满少妇xxxbbb| 亚洲国产乱码最新视频| 久久亚洲精品一区二区| 激情一区二区三区| 久久精品99国产精品| 国产午夜精品在线| 午夜视频一区| 国产在线播放一区二区三区| 性做久久久久久久久| 国产精品久久久久久久久久免费| 亚洲天堂黄色| 国产精品久久久久秋霞鲁丝| 亚洲午夜精品久久久久久浪潮| 欧美日韩国产综合久久| 亚洲深夜福利视频| 国产精品一区三区| 久久电影一区| 亚洲成色777777在线观看影院| 久久先锋资源| 亚洲国产欧美另类丝袜| 欧美日本韩国一区| 亚洲午夜女主播在线直播| 国产精品一区一区三区| 久久av资源网| 亚洲国产清纯| 欧美视频福利| 久久成人精品| 亚洲精品乱码视频| 国产精品久久久久久久一区探花| 西西人体一区二区| 伊人男人综合视频网| 欧美精品国产精品| 亚洲尤物在线视频观看| 国内自拍亚洲| 欧美精品自拍偷拍动漫精品| 亚洲一区3d动漫同人无遮挡| 国产亚洲精品v| 欧美激情网友自拍| 亚洲欧美一区二区原创| 国产一区欧美日韩| 欧美久久久久久蜜桃| 香蕉尹人综合在线观看| 亚洲国产精品一区| 国产精品爽爽ⅴa在线观看| 久久婷婷国产麻豆91天堂| 夜夜躁日日躁狠狠久久88av| 国产亚洲成精品久久| 欧美日产一区二区三区在线观看| 欧美一级理论片| 99国产精品国产精品毛片| 国产一区二区三区日韩| 欧美三级精品| 欧美va天堂| 久久久久久穴| 午夜精品久久| 日韩视频免费观看高清完整版| 国产午夜精品理论片a级探花| 欧美高清在线| 久久综合九色综合欧美就去吻 | 亚洲经典自拍| 国产婷婷成人久久av免费高清| 欧美日韩成人综合天天影院| 久久婷婷亚洲| 欧美在线一二三区| 亚洲婷婷综合久久一本伊一区| 在线看成人片| 国产真实久久| 国产日韩亚洲欧美| 国产精品亚洲欧美| 欧美性片在线观看| 欧美视频日韩视频在线观看| 欧美精品综合| 欧美日韩 国产精品| 欧美国产亚洲另类动漫|