class文件简介
可以直接把.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有插件可以支持。總結
- 上一篇: iptables防火墙(二)
- 下一篇: argparse库 学习记录