JVM-05(if指令)
2019-06-24 本文已影响0人
平头哥2
jvm 条件控制指定
Java代码如下:
public class HelloWorld{
public void testIf(boolean a) {
if(a) {
System.out.println(a);
}
}
public void testIf(byte a, byte b) {
if (b > a) {
System.out.println(a);
} else if (a == b) {
System.out.println("==");
} else {
System.out.println("<");
}
}
public void testIf(char a, char b) {
if (b > a) {
System.out.println(a);
} else if (a == b) {
System.out.println("==");
} else {
System.out.println("<");
}
}
public void testIf(short a, short b) {
if (b > a) {
System.out.println(a);
} else if (a == b) {
System.out.println("==");
} else {
System.out.println("<");
}
}
public void testIf(int a, int b) {
if (b > a) {
System.out.println(a);
} else if (a == b) {
System.out.println("==");
} else {
System.out.println("<");
}
}
public void testIf(long a, long b) {
if (b > a) {
System.out.println(a);
} else if (a == b) {
System.out.println("==");
} else {
System.out.println("<");
}
}
public void testIf(float a, float b) {
if (b > a) {
System.out.println(a);
} else if (a == b) {
System.out.println("==");
} else {
System.out.println("<");
}
}
public void testIf(double a, double b) {
if (b > a) {
System.out.println(a);
} else if (a == b) {
System.out.println("==");
} else {
System.out.println("<");
}
}
}
对应的字节码指令:
$ javap -v HelloWorld.class
Classfile /D:/ideaproject/jvm/HelloWorld.class
Last modified 2019-6-24; size 1754 bytes
MD5 checksum 207965483a7389693ac481745671a47e
Compiled from "HelloWorld.java"
public class HelloWorld
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Methodref #13.#43 // java/lang/Object."<init>":()V
#2 = Fieldref #44.#45 // java/lang/System.out:Ljava/io/PrintStream;
#3 = Methodref #46.#47 // java/io/PrintStream.println:(Z)V
#4 = Methodref #46.#48 // java/io/PrintStream.println:(I)V
#5 = String #49 // ==
#6 = Methodref #46.#50 // java/io/PrintStream.println:(Ljava/lang/String;)V
#7 = String #51 // <
#8 = Methodref #46.#52 // java/io/PrintStream.println:(C)V
#9 = Methodref #46.#53 // java/io/PrintStream.println:(J)V
#10 = Methodref #46.#54 // java/io/PrintStream.println:(F)V
#11 = Methodref #46.#55 // java/io/PrintStream.println:(D)V
#12 = Class #56 // HelloWorld
#13 = Class #57 // java/lang/Object
#14 = Utf8 <init>
#15 = Utf8 ()V
#16 = Utf8 Code
#17 = Utf8 LineNumberTable
#18 = Utf8 LocalVariableTable
#19 = Utf8 this
#20 = Utf8 LHelloWorld;
#21 = Utf8 testIf
#22 = Utf8 (Z)V
#23 = Utf8 a
#24 = Utf8 Z
#25 = Utf8 StackMapTable
#26 = Utf8 (BB)V
#27 = Utf8 B
#28 = Utf8 b
#29 = Utf8 (CC)V
#30 = Utf8 C
#31 = Utf8 (SS)V
#32 = Utf8 S
#33 = Utf8 (II)V
#34 = Utf8 I
#35 = Utf8 (JJ)V
#36 = Utf8 J
#37 = Utf8 (FF)V
#38 = Utf8 F
#39 = Utf8 (DD)V
#40 = Utf8 D
#41 = Utf8 SourceFile
#42 = Utf8 HelloWorld.java
#43 = NameAndType #14:#15 // "<init>":()V
#44 = Class #58 // java/lang/System
#45 = NameAndType #59:#60 // out:Ljava/io/PrintStream;
#46 = Class #61 // java/io/PrintStream
#47 = NameAndType #62:#22 // println:(Z)V
#48 = NameAndType #62:#63 // println:(I)V
#49 = Utf8 ==
#50 = NameAndType #62:#64 // println:(Ljava/lang/String;)V
#51 = Utf8 <
#52 = NameAndType #62:#65 // println:(C)V
#53 = NameAndType #62:#66 // println:(J)V
#54 = NameAndType #62:#67 // println:(F)V
#55 = NameAndType #62:#68 // println:(D)V
#56 = Utf8 HelloWorld
#57 = Utf8 java/lang/Object
#58 = Utf8 java/lang/System
#59 = Utf8 out
#60 = Utf8 Ljava/io/PrintStream;
#61 = Utf8 java/io/PrintStream
#62 = Utf8 println
#63 = Utf8 (I)V
#64 = Utf8 (Ljava/lang/String;)V
#65 = Utf8 (C)V
#66 = Utf8 (J)V
#67 = Utf8 (F)V
#68 = Utf8 (D)V
{
public HelloWorld();
descriptor: ()V
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 1: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this LHelloWorld;
public void testIf(boolean);
descriptor: (Z)V
flags: ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
0: iload_1 // 加载局部变量表索引1的变量
1: ifeq 11 //ifeq,value出栈,和0比较,当value=0时结果为真
4: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
7: iload_1
8: invokevirtual #3 // Method java/io/PrintStream.println:(Z)V
11: return
LineNumberTable:
line 3: 0
line 4: 4
line 6: 11
LocalVariableTable:
Start Length Slot Name Signature
0 12 0 this LHelloWorld;
0 12 1 a Z
StackMapTable: number_of_entries = 1
frame_type = 11 /* same */
public void testIf(byte, byte);
descriptor: (BB)V
flags: ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
0: iload_2
1: iload_1
2: if_icmple 15
5: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
8: iload_1
9: invokevirtual #4 // Method java/io/PrintStream.println:(I)V
12: goto 39
15: iload_1
16: iload_2
17: if_icmpne 31
20: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
23: ldc #5 // String ==
25: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
28: goto 39
31: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
34: ldc #7 // String <
36: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
39: return
LineNumberTable:
line 9: 0
line 10: 5
line 11: 15
line 12: 20
line 14: 31
line 16: 39
LocalVariableTable:
Start Length Slot Name Signature
0 40 0 this LHelloWorld;
0 40 1 a B
0 40 2 b B
StackMapTable: number_of_entries = 3
frame_type = 15 /* same */
frame_type = 15 /* same */
frame_type = 7 /* same */
public void testIf(char, char);
descriptor: (CC)V
flags: ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
0: iload_2
1: iload_1
2: if_icmple 15
5: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
8: iload_1
9: invokevirtual #8 // Method java/io/PrintStream.println:(C)V
12: goto 39
15: iload_1
16: iload_2
17: if_icmpne 31
20: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
23: ldc #5 // String ==
25: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
28: goto 39
31: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
34: ldc #7 // String <
36: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
39: return
LineNumberTable:
line 19: 0
line 20: 5
line 21: 15
line 22: 20
line 24: 31
line 26: 39
LocalVariableTable:
Start Length Slot Name Signature
0 40 0 this LHelloWorld;
0 40 1 a C
0 40 2 b C
StackMapTable: number_of_entries = 3
frame_type = 15 /* same */
frame_type = 15 /* same */
frame_type = 7 /* same */
public void testIf(short, short);
descriptor: (SS)V
flags: ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
0: iload_2
1: iload_1
2: if_icmple 15
5: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
8: iload_1
9: invokevirtual #4 // Method java/io/PrintStream.println:(I)V
12: goto 39
15: iload_1
16: iload_2
17: if_icmpne 31
20: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
23: ldc #5 // String ==
25: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
28: goto 39
31: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
34: ldc #7 // String <
36: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
39: return
LineNumberTable:
line 29: 0
line 30: 5
line 31: 15
line 32: 20
line 34: 31
line 36: 39
LocalVariableTable:
Start Length Slot Name Signature
0 40 0 this LHelloWorld;
0 40 1 a S
0 40 2 b S
StackMapTable: number_of_entries = 3
frame_type = 15 /* same */
frame_type = 15 /* same */
frame_type = 7 /* same */
public void testIf(int, int);
descriptor: (II)V
flags: ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
0: iload_2
1: iload_1
2: if_icmple 15
5: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
8: iload_1
9: invokevirtual #4 // Method java/io/PrintStream.println:(I)V
12: goto 39
15: iload_1
16: iload_2
17: if_icmpne 31
20: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
23: ldc #5 // String ==
25: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
28: goto 39
31: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
34: ldc #7 // String <
36: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
39: return
LineNumberTable:
line 39: 0
line 40: 5
line 41: 15
line 42: 20
line 44: 31
line 47: 39
LocalVariableTable:
Start Length Slot Name Signature
0 40 0 this LHelloWorld;
0 40 1 a I
0 40 2 b I
StackMapTable: number_of_entries = 3
frame_type = 15 /* same */
frame_type = 15 /* same */
frame_type = 7 /* same */
public void testIf(long, long);
descriptor: (JJ)V
flags: ACC_PUBLIC
Code:
stack=4, locals=5, args_size=3
0: lload_3
1: lload_1
2: lcmp
3: ifle 16
6: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
9: lload_1
10: invokevirtual #9 // Method java/io/PrintStream.println:(J)V
13: goto 41
16: lload_1
17: lload_3
18: lcmp
19: ifne 33
22: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
25: ldc #5 // String ==
27: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
30: goto 41
33: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
36: ldc #7 // String <
38: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
41: return
LineNumberTable:
line 50: 0
line 51: 6
line 52: 16
line 53: 22
line 55: 33
line 58: 41
LocalVariableTable:
Start Length Slot Name Signature
0 42 0 this LHelloWorld;
0 42 1 a J
0 42 3 b J
StackMapTable: number_of_entries = 3
frame_type = 16 /* same */
frame_type = 16 /* same */
frame_type = 7 /* same */
public void testIf(float, float);
descriptor: (FF)V
flags: ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
0: fload_2
1: fload_1
2: fcmpl
3: ifle 16
6: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
9: fload_1
10: invokevirtual #10 // Method java/io/PrintStream.println:(F)V
13: goto 41
16: fload_1
17: fload_2
18: fcmpl
19: ifne 33
22: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
25: ldc #5 // String ==
27: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
30: goto 41
33: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
36: ldc #7 // String <
38: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
41: return
LineNumberTable:
line 61: 0
line 62: 6
line 63: 16
line 64: 22
line 66: 33
line 69: 41
LocalVariableTable:
Start Length Slot Name Signature
0 42 0 this LHelloWorld;
0 42 1 a F
0 42 2 b F
StackMapTable: number_of_entries = 3
frame_type = 16 /* same */
frame_type = 16 /* same */
frame_type = 7 /* same */
public void testIf(double, double);
descriptor: (DD)V
flags: ACC_PUBLIC
Code:
stack=4, locals=5, args_size=3
0: dload_3
1: dload_1
2: dcmpl
3: ifle 16
6: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
9: dload_1
10: invokevirtual #11 // Method java/io/PrintStream.println:(D)V
13: goto 41
16: dload_1
17: dload_3
18: dcmpl
19: ifne 33
22: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
25: ldc #5 // String ==
27: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
30: goto 41
33: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
36: ldc #7 // String <
38: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
41: return
LineNumberTable:
line 72: 0
line 73: 6
line 74: 16
line 75: 22
line 77: 33
line 80: 41
LocalVariableTable:
Start Length Slot Name Signature
0 42 0 this LHelloWorld;
0 42 1 a D
0 42 3 b D
StackMapTable: number_of_entries = 3
frame_type = 16 /* same */
frame_type = 16 /* same */
frame_type = 7 /* same */
}
SourceFile: "HelloWorld.java"
对应的class文件的16进制格式表示:
00000000: cafe babe 0000 0034 0045 0a00 0d00 2b09 .......4.E....+.
00000010: 002c 002d 0a00 2e00 2f0a 002e 0030 0800 .,.-..../....0..
00000020: 310a 002e 0032 0800 330a 002e 0034 0a00 1....2..3....4..
00000030: 2e00 350a 002e 0036 0a00 2e00 3707 0038 ..5....6....7..8
00000040: 0700 3901 0006 3c69 6e69 743e 0100 0328 ..9...<init>...(
00000050: 2956 0100 0443 6f64 6501 000f 4c69 6e65 )V...Code...Line
00000060: 4e75 6d62 6572 5461 626c 6501 0012 4c6f NumberTable...Lo
00000070: 6361 6c56 6172 6961 626c 6554 6162 6c65 calVariableTable
00000080: 0100 0474 6869 7301 000c 4c48 656c 6c6f ...this...LHello
00000090: 576f 726c 643b 0100 0674 6573 7449 6601 World;...testIf.
000000a0: 0004 285a 2956 0100 0161 0100 015a 0100 ..(Z)V...a...Z..
000000b0: 0d53 7461 636b 4d61 7054 6162 6c65 0100 .StackMapTable..
000000c0: 0528 4242 2956 0100 0142 0100 0162 0100 .(BB)V...B...b..
000000d0: 0528 4343 2956 0100 0143 0100 0528 5353 .(CC)V...C...(SS
000000e0: 2956 0100 0153 0100 0528 4949 2956 0100 )V...S...(II)V..
000000f0: 0149 0100 0528 4a4a 2956 0100 014a 0100 .I...(JJ)V...J..
00000100: 0528 4646 2956 0100 0146 0100 0528 4444 .(FF)V...F...(DD
00000110: 2956 0100 0144 0100 0a53 6f75 7263 6546 )V...D...SourceF
00000120: 696c 6501 000f 4865 6c6c 6f57 6f72 6c64 ile...HelloWorld
00000130: 2e6a 6176 610c 000e 000f 0700 3a0c 003b .java.......:..;
00000140: 003c 0700 3d0c 003e 0016 0c00 3e00 3f01 .<..=..>....>.?.
00000150: 0002 3d3d 0c00 3e00 4001 0001 3c0c 003e ..==..>.@...<..>
00000160: 0041 0c00 3e00 420c 003e 0043 0c00 3e00 .A..>.B..>.C..>.
00000170: 4401 000a 4865 6c6c 6f57 6f72 6c64 0100 D...HelloWorld..
00000180: 106a 6176 612f 6c61 6e67 2f4f 626a 6563 .java/lang/Objec
00000190: 7401 0010 6a61 7661 2f6c 616e 672f 5379 t...java/lang/Sy
000001a0: 7374 656d 0100 036f 7574 0100 154c 6a61 stem...out...Lja
000001b0: 7661 2f69 6f2f 5072 696e 7453 7472 6561 va/io/PrintStrea
000001c0: 6d3b 0100 136a 6176 612f 696f 2f50 7269 m;...java/io/Pri
000001d0: 6e74 5374 7265 616d 0100 0770 7269 6e74 ntStream...print
000001e0: 6c6e 0100 0428 4929 5601 0015 284c 6a61 ln...(I)V...(Lja
000001f0: 7661 2f6c 616e 672f 5374 7269 6e67 3b29 va/lang/String;)
00000200: 5601 0004 2843 2956 0100 0428 4a29 5601 V...(C)V...(J)V.
00000210: 0004 2846 2956 0100 0428 4429 5600 2100 ..(F)V...(D)V.!.
00000220: 0c00 0d00 0000 0000 0900 0100 0e00 0f00 ................
00000230: 0100 1000 0000 2f00 0100 0100 0000 052a ....../........*
00000240: b700 01b1 0000 0002 0011 0000 0006 0001 ................
00000250: 0000 0001 0012 0000 000c 0001 0000 0005 ................
00000260: 0013 0014 0000 0001 0015 0016 0001 0010 ................
00000270: 0000 0051 0002 0002 0000 000c 1b99 000a ...Q............
00000280: b200 021b b600 03b1 0000 0003 0011 0000 ................
00000290: 000e 0003 0000 0003 0004 0004 000b 0006 ................
000002a0: 0012 0000 0016 0002 0000 000c 0013 0014 ................
000002b0: 0000 0000 000c 0017 0018 0001 0019 0000 ................
000002c0: 0003 0001 0b00 0100 1500 1a00 0100 1000 ................
000002d0: 0000 8500 0200 0300 0000 281c 1ba4 000d ..........(.....
000002e0: b200 021b b600 04a7 001b 1b1c a000 0eb2 ................
000002f0: 0002 1205 b600 06a7 000b b200 0212 07b6 ................
00000300: 0006 b100 0000 0300 1100 0000 1a00 0600 ................
00000310: 0000 0900 0500 0a00 0f00 0b00 1400 0c00 ................
00000320: 1f00 0e00 2700 1000 1200 0000 2000 0300 ....'....... ...
00000330: 0000 2800 1300 1400 0000 0000 2800 1700 ..(.........(...
00000340: 1b00 0100 0000 2800 1c00 1b00 0200 1900 ......(.........
00000350: 0000 0500 030f 0f07 0001 0015 001d 0001 ................
00000360: 0010 0000 0085 0002 0003 0000 0028 1c1b .............(..
00000370: a400 0db2 0002 1bb6 0008 a700 1b1b 1ca0 ................
00000380: 000e b200 0212 05b6 0006 a700 0bb2 0002 ................
00000390: 1207 b600 06b1 0000 0003 0011 0000 001a ................
000003a0: 0006 0000 0013 0005 0014 000f 0015 0014 ................
000003b0: 0016 001f 0018 0027 001a 0012 0000 0020 .......'.......
000003c0: 0003 0000 0028 0013 0014 0000 0000 0028 .....(.........(
000003d0: 0017 001e 0001 0000 0028 001c 001e 0002 .........(......
000003e0: 0019 0000 0005 0003 0f0f 0700 0100 1500 ................
000003f0: 1f00 0100 1000 0000 8500 0200 0300 0000 ................
00000400: 281c 1ba4 000d b200 021b b600 04a7 001b (...............
00000410: 1b1c a000 0eb2 0002 1205 b600 06a7 000b ................
00000420: b200 0212 07b6 0006 b100 0000 0300 1100 ................
00000430: 0000 1a00 0600 0000 1d00 0500 1e00 0f00 ................
00000440: 1f00 1400 2000 1f00 2200 2700 2400 1200 .... ...".'.$...
00000450: 0000 2000 0300 0000 2800 1300 1400 0000 .. .....(.......
00000460: 0000 2800 1700 2000 0100 0000 2800 1c00 ..(... .....(...
00000470: 2000 0200 1900 0000 0500 030f 0f07 0001 ...............
00000480: 0015 0021 0001 0010 0000 0085 0002 0003 ...!............
00000490: 0000 0028 1c1b a400 0db2 0002 1bb6 0004 ...(............
000004a0: a700 1b1b 1ca0 000e b200 0212 05b6 0006 ................
000004b0: a700 0bb2 0002 1207 b600 06b1 0000 0003 ................
000004c0: 0011 0000 001a 0006 0000 0027 0005 0028 ...........'...(
000004d0: 000f 0029 0014 002a 001f 002c 0027 002f ...)...*...,.'./
000004e0: 0012 0000 0020 0003 0000 0028 0013 0014 ..... .....(....
000004f0: 0000 0000 0028 0017 0022 0001 0000 0028 .....(...".....(
00000500: 001c 0022 0002 0019 0000 0005 0003 0f0f ..."............
00000510: 0700 0100 1500 2300 0100 1000 0000 8700 ......#.........
00000520: 0400 0500 0000 2a21 1f94 9e00 0db2 0002 ......*!........
00000530: 1fb6 0009 a700 1c1f 2194 9a00 0eb2 0002 ........!.......
00000540: 1205 b600 06a7 000b b200 0212 07b6 0006 ................
00000550: b100 0000 0300 1100 0000 1a00 0600 0000 ................
00000560: 3200 0600 3300 1000 3400 1600 3500 2100 2...3...4...5.!.
00000570: 3700 2900 3a00 1200 0000 2000 0300 0000 7.).:..... .....
00000580: 2a00 1300 1400 0000 0000 2a00 1700 2400 *.........*...$.
00000590: 0100 0000 2a00 1c00 2400 0300 1900 0000 ....*...$.......
000005a0: 0500 0310 1007 0001 0015 0025 0001 0010 ...........%....
000005b0: 0000 0087 0002 0003 0000 002a 2423 959e ...........*$#..
000005c0: 000d b200 0223 b600 0aa7 001c 2324 959a .....#......#$..
000005d0: 000e b200 0212 05b6 0006 a700 0bb2 0002 ................
000005e0: 1207 b600 06b1 0000 0003 0011 0000 001a ................
000005f0: 0006 0000 003d 0006 003e 0010 003f 0016 .....=...>...?..
00000600: 0040 0021 0042 0029 0045 0012 0000 0020 .@.!.B.).E.....
00000610: 0003 0000 002a 0013 0014 0000 0000 002a .....*.........*
00000620: 0017 0026 0001 0000 002a 001c 0026 0002 ...&.....*...&..
00000630: 0019 0000 0005 0003 1010 0700 0100 1500 ................
00000640: 2700 0100 1000 0000 8700 0400 0500 0000 '...............
00000650: 2a29 2797 9e00 0db2 0002 27b6 000b a700 *)'.......'.....
00000660: 1c27 2997 9a00 0eb2 0002 1205 b600 06a7 .').............
00000670: 000b b200 0212 07b6 0006 b100 0000 0300 ................
00000680: 1100 0000 1a00 0600 0000 4800 0600 4900 ..........H...I.
00000690: 1000 4a00 1600 4b00 2100 4d00 2900 5000 ..J...K.!.M.).P.
000006a0: 1200 0000 2000 0300 0000 2a00 1300 1400 .... .....*.....
000006b0: 0000 0000 2a00 1700 2800 0100 0000 2a00 ....*...(.....*.
000006c0: 1c00 2800 0300 1900 0000 0500 0310 1007 ..(.............
000006d0: 0001 0029 0000 0002 002a ...).....*
小结:
1. boolean, byte, char, short ,int 使用的字节码指令基本一致
2. long,float,double都有自己的加载数据指令和比较指令