可以直接把.class文件拖到eclipse中,看到内容。
图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有插件可以支持。