天天看點

class檔案簡介1.檔案格式2.類型表示3.方法簽名4.反編譯

可以直接把.class檔案拖到eclipse中,看到内容。

class檔案簡介1.檔案格式2.類型表示3.方法簽名4.反編譯

圖0-1 class檔案内容示例

(1) magic

在class檔案開頭的四個位元組, 存放着class檔案的魔數,為固定值0xcafebabe。若無,則 不能被jvm識别。

(2)minor_version 和 major_version

緊接着魔數的四個位元組是class檔案的此版本号和主版本号。

l類型的全限定名;  

如long類型對應的就是ljava/lang/long;

需要注意到,在表示全限定名時将點号替換成了“/”。

每種基本資料類型都有一個大寫字母做對應, void也有一個大寫字元做對應。 下表是void和基本資料類型在描述符中的對應。

基本資料類型和void類型

類型的對應字元

byte

b

char

c

double

d

float

f

int

i

long

j

short

s

boolean

z

void

v

若幹個“[”  +  數組中元素類型的對應字元串  。如object[][][]類型的對應字元串是: [[[ljava/lang/object; 

如double[][] 類型的對應字元串是: [[d

(參數1類型 參數2類型 參數3類型 ...)傳回值類型  

一些對照情況見下表。

方法描述符

方法聲明

()i

int getsize()

()ljava/lang/string;

string tostring()

([ljava/lang/string;)v

void main(string[] args)

()v

void wait()

(ji)v

void wait(long timeout, int nanos)

(ziljava/lang/string;ii)z

boolean regionmatches(boolean ignorecase, int tooffset, string other, int ooffset, int len)

([bii)i

int read(byte[] b, int off, int len )

()[[ljava/lang/object;

object[][] getobjectarray()

eclipse有插件可以支援。

繼續閱讀