1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
| /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home\bin\javap -v Test
Classfile /Users/baoguo/codes/demo/target/classes/Test.class
Last modified Mar 26, 2022; size 843 bytes
MD5 checksum 59d521a87a420090e23f60ab567f2326
Compiled from "Test.java"
public class Test
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Methodref #11.#30 // java/lang/Object."<init>":()V
#2 = Fieldref #31.#32 // java/lang/System.out:Ljava/io/PrintStream;
#3 = Class #33 // java/lang/StringBuilder
#4 = Methodref #3.#30 // java/lang/StringBuilder."<init>":()V
#5 = String #34 // x =
#6 = Methodref #3.#35 // java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
#7 = Methodref #3.#36 // java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
#8 = Methodref #3.#37 // java/lang/StringBuilder.toString:()Ljava/lang/String;
#9 = Methodref #38.#39 // java/io/PrintStream.println:(Ljava/lang/String;)V
#10 = Class #40 // Test
#11 = Class #41 // java/lang/Object
#12 = Utf8 <init>
#13 = Utf8 ()V
#14 = Utf8 Code
#15 = Utf8 LineNumberTable
#16 = Utf8 LocalVariableTable
#17 = Utf8 this
#18 = Utf8 LTest;
#19 = Utf8 main
#20 = Utf8 ([Ljava/lang/String;)V
#21 = Utf8 args
#22 = Utf8 [Ljava/lang/String;
#23 = Utf8 i
#24 = Utf8 I
#25 = Utf8 x
#26 = Utf8 StackMapTable
#27 = Utf8 MethodParameters
#28 = Utf8 SourceFile
#29 = Utf8 Test.java
#30 = NameAndType #12:#13 // "<init>":()V
#31 = Class #42 // java/lang/System
#32 = NameAndType #43:#44 // out:Ljava/io/PrintStream;
#33 = Utf8 java/lang/StringBuilder
#34 = Utf8 x =
#35 = NameAndType #45:#46 // append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
#36 = NameAndType #45:#47 // append:(I)Ljava/lang/StringBuilder;
#37 = NameAndType #48:#49 // toString:()Ljava/lang/String;
#38 = Class #50 // java/io/PrintStream
#39 = NameAndType #51:#52 // println:(Ljava/lang/String;)V
#40 = Utf8 Test
#41 = Utf8 java/lang/Object
#42 = Utf8 java/lang/System
#43 = Utf8 out
#44 = Utf8 Ljava/io/PrintStream;
#45 = Utf8 append
#46 = Utf8 (Ljava/lang/String;)Ljava/lang/StringBuilder;
#47 = Utf8 (I)Ljava/lang/StringBuilder;
#48 = Utf8 toString
#49 = Utf8 ()Ljava/lang/String;
#50 = Utf8 java/io/PrintStream
#51 = Utf8 println
#52 = Utf8 (Ljava/lang/String;)V
{
public Test();
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 LTest;
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
0: iconst_0
1: istore_1
2: iconst_0
3: istore_2
4: iload_1
5: iconst_3
6: if_icmpge 20
9: iload_2
10: iinc 2, 1
13: istore_2 //把上面iinc自增的值给覆盖掉了。
14: iinc 1, 1
17: goto 4
20: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
23: new #3 // class java/lang/StringBuilder
26: dup
27: invokespecial #4 // Method java/lang/StringBuilder."<init>":()V
30: ldc #5 // String x =
32: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
35: iload_2
36: invokevirtual #7 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
39: invokevirtual #8 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
42: invokevirtual #9 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
45: return
LineNumberTable:
line 3: 0
line 4: 2
line 5: 4
line 6: 9
line 7: 14
line 9: 20
line 10: 45
LocalVariableTable:
Start Length Slot Name Signature
0 46 0 args [Ljava/lang/String;
2 44 1 i I
4 42 2 x I
StackMapTable: number_of_entries = 2
frame_type = 253 /* append */
offset_delta = 4
locals = [ int, int ]
frame_type = 15 /* same */
MethodParameters:
Name Flags
args
}
SourceFile: "Test.java"
Process finished with exit code 0
|