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

Java類文件的基本結構
來源:易賢網 閱讀:1070 次 日期: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)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲国产精品一区二区久| 欧美色中文字幕| 日韩一级黄色大片| 在线观看精品一区| 国产麻豆综合| 久久性色av| 久久精品官网| 蜜臀av在线播放一区二区三区| 老鸭窝91久久精品色噜噜导演| 国产精品红桃| 亚洲午夜精品在线| 欧美大片第1页| 99视频精品在线| 美女诱惑一区| 在线免费观看日本一区| 亚洲欧美日韩国产| 欧美日韩成人激情| 亚洲伦理一区| 国产在线国偷精品产拍免费yy| 亚洲免费网站| 久久久蜜桃一区二区人| …久久精品99久久香蕉国产 | 国产精品一区毛片| 亚洲影视九九影院在线观看| 91久久精品美女| 国产麻豆日韩| 国产午夜久久久久| 国产精品久久久久秋霞鲁丝| 美女视频一区免费观看| 先锋影院在线亚洲| 亚洲激情啪啪| 在线不卡中文字幕| 亚洲欧洲三级电影| 亚洲高清中文字幕| 欧美特黄a级高清免费大片a级| 亚洲尤物精选| 欧美日韩国产高清| 亚洲激情网站| 欧美亚洲成人精品| 亚洲砖区区免费| 国产免费成人av| 久久精品盗摄| 日韩午夜在线播放| 国产精品久久精品日日| 欧美亚洲综合久久| 在线观看国产精品网站| 欧美成人综合在线| 亚洲欧美日韩一区二区三区在线| 欧美金8天国| 亚洲视频一区二区免费在线观看| 免费成人毛片| 国产精品www| 好吊成人免视频| 欧美日韩亚洲视频| 欧美激情成人在线| 国产伦精品一区二区三区高清版 | 国产精品欧美经典| 国产视频一区欧美| 国产亚洲在线| 在线亚洲高清视频| 久热精品视频在线免费观看| 欧美私人网站| 亚洲视频在线看| 欧美日韩精品一区二区在线播放| 国产综合香蕉五月婷在线| 91久久精品一区二区别| 欧美一区午夜精品| 国产目拍亚洲精品99久久精品 | 国产欧美在线观看| 精品69视频一区二区三区| 国产一区二区三区免费在线观看| 亚洲国产乱码最新视频| 午夜在线视频观看日韩17c| 欧美大片一区二区| 国产婷婷97碰碰久久人人蜜臀| 亚洲毛片av在线| 国产精品久久久久三级| 99精品福利视频| 国产精品a级| 久久精品综合| 在线观看亚洲| 国产精品狠色婷| 欧美sm视频| 久久不射2019中文字幕| 亚洲精品免费电影| 国产精品综合| 欧美国产日韩精品| 亚洲女与黑人做爰| 国产一区二区视频在线观看| 毛片一区二区三区| 亚洲综合999| 伊人久久亚洲影院| 国产欧美一区二区精品性| 久久精品久久综合| 亚洲一区激情| 欧美性猛交一区二区三区精品| 久久精品国产999大香线蕉| 亚洲免费高清| 在线看视频不卡| 在线观看中文字幕亚洲| 国产日韩亚洲| 在线日韩成人| 欧美激情在线观看| 午夜精品一区二区三区四区 | 欧美va亚洲va国产综合| 亚洲一区亚洲二区| 一区二区三区三区在线| 亚洲精品在线三区| 日韩视频在线观看免费| 亚洲精品之草原avav久久| 亚洲国产欧美一区二区三区久久| 国内成人自拍视频| 永久免费毛片在线播放不卡| 国产精品看片资源| 国精品一区二区三区| 一区二区视频免费完整版观看| 欧美精品v日韩精品v韩国精品v| 美日韩在线观看| 久久一区二区三区av| 性欧美1819性猛交| 亚洲视频自拍偷拍| 久久精品av麻豆的观看方式| 欧美日韩亚洲一区二区三区| 国产一区二区精品丝袜| 欧美日韩p片| 亚洲国产精品电影在线观看| 亚洲精品国产精品乱码不99按摩| 日韩视频在线一区二区| 亚洲美女免费视频| 一区二区国产精品| 欧美 日韩 国产精品免费观看| 国产精品久久久爽爽爽麻豆色哟哟| 樱花yy私人影院亚洲| 在线天堂一区av电影| 久久成人免费日本黄色| 欧美日韩一区二区在线播放| 国产精品一区二区久激情瑜伽| 亚洲高清在线观看一区| 国产一区激情| 亚洲一区二区三区四区视频| 久久久免费av| 国产亚洲免费的视频看| 午夜精品久久久久久久99热浪潮 | 极品少妇一区二区三区精品视频| 一区二区三区四区五区在线| 欧美激情视频在线播放| 亚洲另类黄色| 国产精品久久久久久久久婷婷| 亚洲小说欧美另类婷婷| 国产欧美一区二区三区在线老狼| 亚洲欧美三级在线| 狠狠爱综合网| 欧美日本在线播放| 久久九九国产| 欧美在线观看一二区| 欧美韩日亚洲| 亚洲欧美日韩精品综合在线观看| 国内精品一区二区| 亚洲区一区二区三区| 国产精品午夜在线观看| 欧美激情1区| 午夜一区不卡| 国产精品久久久久久亚洲调教 | 久久久久免费视频| 亚洲美女中文字幕| 激情婷婷欧美| 国产精品wwwwww| 欧美三区在线观看| 美女性感视频久久久| 久久国产精品99久久久久久老狼 | 尤物yw午夜国产精品视频明星 | 欧美日韩一区三区四区| 你懂的成人av| 欧美1区免费| 美女999久久久精品视频| 久久激情中文| 欧美在线一二三区| 性欧美18~19sex高清播放| 亚洲午夜电影网| 亚洲一区二区三区乱码aⅴ| 在线亚洲欧美| 亚洲一区二区精品| 亚洲欧美亚洲| 久久精品99国产精品日本| 欧美在线观看视频一区二区| 欧美一区午夜精品| 久久久久国产精品一区| 久久夜色精品国产欧美乱| 欧美gay视频激情| 欧美精品国产一区二区| 欧美日韩在线影院| 国产精品久久激情| 国产亚洲人成网站在线观看| 国模大胆一区二区三区| 一区二区在线观看av| 91久久精品国产91久久| 一本不卡影院| 羞羞答答国产精品www一本| 久久天天狠狠| 欧美日韩在线播|