溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

class文件里邊有什么

發(fā)布時(shí)間:2021-10-20 15:42:33 來源:億速云 閱讀:110 作者:iii 欄目:編程語言

這篇文章主要講解了“class文件里邊有什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“class文件里邊有什么”吧!

屬性表

首先屬性表是用來補(bǔ)充信息用的,比如他可以繼續(xù)補(bǔ)充類文件的信息、就是我們上面最后的那一段內(nèi)容,還有他可以補(bǔ)充字段的信息,補(bǔ)充方法的信息。所以它出現(xiàn)的位置不同,補(bǔ)充的額外信息也會不一樣。

下面我們 「簡單」 的了解一下都有哪些 「主要」 的內(nèi)容,之所以要簡單、要了解主要的,就是因?yàn)樗4娴念~外信息實(shí)在太多了。

屬性表的結(jié)構(gòu)是由 2 個(gè)字節(jié)的屬性名索引,4 個(gè)字節(jié)的屬性內(nèi)容長度,和 1 個(gè)字節(jié)的屬性信息組成。

按照屬性的類別可以分為:類文件屬性、字段表屬性、方法表屬性 

類文件屬性 

InnerClass

保存主類和內(nèi)部類的關(guān)系 

SourceFile

記錄生成這個(gè)Class文件的源碼文件名稱 

方法表屬性 

Code

Java 程序方法體里面的代碼經(jīng)過 Javac 編譯器處理之后, 最終變?yōu)樽止?jié)碼指令存儲在Code屬性內(nèi)。并非所有的方法表都必須存在這個(gè)屬性, 接口或者抽象類中的方法就不存在Code屬性 。

code 屬性里面還有屬性表.... (套娃?。?,其中包含

  • LineNumberTable 源碼和生成的字節(jié)碼行號映射表
  • LocalVariableTable 棧幀中的變量與源碼變量的映射關(guān)系
  • ExceptionTable 異常表
  • ..... 
Exceptions

Exceptions屬性的作用是列舉出在throws關(guān)鍵字后面拋出的異常

MethodParameters

定義方法的參數(shù)信息 

字段表屬性 

ConstantValue

這個(gè)屬性用于為字段的靜態(tài)變量賦值。只有字段聲明為 static 時(shí)才有效。Javac 編譯器在編譯的時(shí)候,如果遇到 static 和 final 同時(shí)修飾的 基本類型或String 類型變量,會直接在 ConstantValue 屬性進(jìn)行字段初始化。也就是我們說的常量。如果沒有 final 修飾,或者不是基本類型和 String 類型,則會在類初始化方法執(zhí)行的時(shí)候初始化  <clinit> 

通用屬性 

Deprecated

Deprecated屬性用于表示某個(gè)類、 字段或者方法被棄用

感謝各位的閱讀,以上就是“class文件里邊有什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對class文件里邊有什么這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI