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

图0-1 class文件内容示例
1.文件格式
(1) magic
在class文件开头的四个字节, 存放着class文件的魔数,为固定值0XCAFEBABE。若无,则 不能被JVM识别。
(2)minor_version 和 major_version
紧接着魔数的四个字节是class文件的此版本号和主版本号。
2.类型表示
2.1 引用类型
L类型的全限定名;
如Long类型对应的就是Ljava/lang/Long;
需要注意到,在表示全限定名时将点号替换成了“/”。
2.2 基本类型
每种基本数据类型都有一个大写字母做对应, void也有一个大写字符做对应。 下表是void和基本数据类型在描述符中的对应。
| 基本数据类型和void类型 | 类型的对应字符 |
| byte | B |
| char | C |
| double | D |
| float | F |
| int | I |
| long | J |
| short | S |
| boolean | Z |
| void | V |
2.3 数组类型
若干个“[” + 数组中元素类型的对应字符串 。如Object[][][]类型的对应字符串是:
[[[Ljava/lang/Object;
如double[][] 类型的对应字符串是:
[[D
3.方法签名
(参数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() |
4.反编译
eclipse有插件可以支持。