public class HelloWorld { public static void main(String[] args) { int i = 10; int j = 20; int k = i+j; System.out.println(k); } }
2、在终端通过 javac 命令编译 HelloWorld.java。
javac HelloWorld.java
3、编译成功之后我们可以看到生成的 16 进制的字节码文件 HelloWorld.class。
cafe babe 0000 0036 001b 0a00 0500 0e09 000f 0010 0a00 1100 1207 0013 0700 1401 0006 3c69 6e69 743e 0100 0328 2956 0100 0443 6f64 6501 000f 4c69 6e65 4e75 6d62 6572 5461 626c 6501 0004 6d61 696e 0100 1628 5b4c 6a61 7661 2f6c 616e 672f 5374 7269 6e67 3b29 5601 000a 536f 7572 6365 4669 6c65 0100 0f48 656c 6c6f 576f 726c 642e 6a61 7661 0c00 0600 0707 0015 0c00 1600 1707 0018 0c00 1900 1a01 001d 636f 6d2f 736f 7574 6877 696e 642f 7465 7374 2f48 656c 6c6f 576f 726c 6401 0010 6a61 7661 2f6c 616e 672f 4f62 6a65 6374 0100 106a 6176 612f 6c61 6e67 2f53 7973 7465 6d01 0003 6f75 7401 0015 4c6a 6176 612f 696f 2f50 7269 6e74 5374 7265 616d 3b01 0013 6a61 7661 2f69 6f2f 5072 696e 7453 7472 6561 6d01 0007 7072 696e 746c 6e01 0004 2849 2956 0021 0004 0005 0000 0000 0002 0001 0006 0007 0001 0008 0000 001d 0001 0001 0000 0005 2ab7 0001 b100 0000 0100 0900 0000 0600 0100 0000 0300 0900 0a00 0b00 0100 0800 0000 3a00 0200 0400 0000 1210 0a3c 1014 3d1b 1c60 3eb2 0002 1db6 0003 b100 0000 0100 0900 0000 1600 0500 0000 0600 0300 0700 0600 0800 0a00 0900 1100 0a00 0100 0c00 0000 0200 0d
javap -c HelloWorld
5、反编译之后的 JVM 指令如下所示。
Compiled from "HelloWorld.java"
public class com.southwind.test.HelloWorld {
public com.southwind.test.HelloWorld();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: bipush 10
2: istore_1
3: bipush 20
5: istore_2
6: iload_1
7: iload_2
8: iadd
9: istore_3
10: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
13: iload_3
14: invokevirtual #3 // Method java/io/PrintStream.println:(I)V
17: return
}
java培训班:http://www.baizhiedu.com/java2019