前言:
笔者最近在阅读《手写 Java 虚拟机》,在实践过程中也遇到了诸多疑问,所谓书山有路勤为径,因而希望能够将我的阅读心得记录下来,供同好互相交流;
以下是一个非常简单明了的 class 文件
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
public class ClassFileTest {
public static final boolean FLAG = false;
public static final byte BYTE = 123;
public static final char X = 'X';
public static final short SHORT = 12345;
public static final int INT = 123456789;
public static final long LONG = 1234567L;
public static final float PI = 3.1415925F;
public static final double E = 2.71828D;
public ClassFileTest() {
}
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
其 16 进制文件对应为
CA FE BA BE 00 00 00 3A 00 3D 0A 00 02 00 03 07 00 04 0C 00 05 00 06 01 00 10 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 01 00 06 3C 69 6E 69 74 3E 01 00 03 28 29 56 09 00 08 00 09 07 00 0A 0C 00 0B 00 0C 01 00 10 6A 61 76 61 2F 6C 61 6E 67 2F 53 79 73 74 65 6D 01 00 03 6F 75 74 01 00 15 4C 6A 61 76 61 2F 69 6F 2F 50 72 69 6E 74 53 74 72 65 61 6D 3B 08 00 0E 01 00 0A 48 65 6C 6C 6F 57 6F 72 6C 64 0A 00 10 00 11 07 00 12 0C 00 13 00 14 01 00 13 6A 61 76 61 2F 69 6F 2F 50 72 69 6E 74 53 74 72 65 61 6D 01 00 07 70 72 69 6E 74 6C 6E 01 00 15 28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 29 56 07 00 16 01 00 0D 43 6C 61 73 73 46 69 6C 65 54 65 73 74 01 00 04 46 4C 41 47 01 00 01 5A 01 00 0D 43 6F 6E 73 74 61 6E 74 56 61 6C 75 65 03 00 00 00 00 01 00 04 42 59 54 45 01 00 01 42 03 00 00 00 7B 01 00 01 58 01 00 01 43 03 00 00 00 58 01 00 05 53 48 4F 52 54 01 00 01 53 03 00 00 30 39 01 00 03 49 4E 54 01 00 01 49 03 07 5B CD 15 01 00 04 4C 4F 4E 47 01 00 01 4A 05 00 00 00 00 00 12 D6 87 01 00 02 50 49 01 00 01 46 04 40 49 0F DA 01 00 01 45 01 00 01 44 06 40 05 BF 09 95 AA F7 90 01 00 04 43 6F 64 65 01 00 0F 4C 69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65 01 00 12 4C 6F 63 61 6C 56 61 72 69 61 62 6C 65 54 61 62 6C 65 01 00 04 74 68 69 73 01 00 0F 4C 43 6C 61 73 73 46 69 6C 65 54 65 73 74 3B 01 00 04 6D 61 69 6E 01 00 16 28 5B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 29 56 01 00 04 61 72 67 73 01 00 13 5B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 01 00 0A 53 6F 75 72 63 65 46 69 6C 65 01 00 12 43 6C 61 73 73 46 69 6C 65 54 65 73 74 2E 6A 61 76 61 00 21 00 15 00 02 00 00 00 08 00 19 00 17 00 18 00 01 00 19 00 00 00 02 00 1A 00 19 00 1B 00 1C 00 01 00 19 00 00 00 02 00 1D 00 19 00 1E 00 1F 00 01 00 19 00 00 00 02 00 20 00 19 00 21 00 22 00 01 00 19 00 00 00 02 00 23 00 19 00 24 00 25 00 01 00 19 00 00 00 02 00 26 00 19 00 27 00 28 00 01 00 19 00 00 00 02 00 29 00 19 00 2B 00 2C 00 01 00 19 00 00 00 02 00 2D 00 19 00 2E 00 2F 00 01 00 19 00 00 00 02 00 30 00 02 00 01 00 05 00 06 00 01 00 32 00 00 00 2F 00 01 00 01 00 00 00 05 2A B7 00 01 B1 00 00 00 02 00 33 00 00 00 06 00 01 00 00 00 01 00 34 00 00 00 0C 00 01 00 00 00 05 00 35 00 36 00 00 00 09 00 37