天天看点

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有插件可以支持。

继续阅读