import java.util.Date;
public class LocalVariablesTest {
private int count = 0;
public static void main(String[] args) {
LocalVariablesTest test = new LocalVariablesTest();
int num = true;
test.test1();
}
public static void testStatic() {
new LocalVariablesTest();
new Date();
int count = 10;
System.out.println(count);
}
public LocalVariablesTest() {
this.count = 1;
}
public void test1() {
Date date = new Date();
String name1 = "atguigu.com";
this.test2(date, name1);
System.out.println(date + name1);
}
public String test2(Date dateP, String name2) {
dateP = null;
name2 = "songhongkang";
double weight = 130.5D;
char gender = true;
return dateP + name2;
}
public void test3() {
++this.count;
}
public void test4() {
int a = 0;
int b = false;
int c = a + 1;
c = a + 1;
}
public void test5Temp() {
}
}
javap -v LocalVariablesTest.class 查看字节码指令信息
Classfile /E:/Users/lwb/IdeaProjects/jxm-server/target/classes/com/jxm/wxvideo/LocalVariablesTest.class
Last modified 2023-2-27; size 1896 bytes
MD5 checksum 7a927ee796938ab210219d381ba90759
Compiled from "LocalVariablesTest.java"
public class com.jxm.wxvideo.LocalVariablesTest
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Class #60 // com/jxm/wxvideo/LocalVariablesTest
#2 = Methodref #1.#61 // com/jxm/wxvideo/LocalVariablesTest."<init>":()V
#3 = Methodref #1.#62 // com/jxm/wxvideo/LocalVariablesTest.test1:()V
#4 = Class #63 // java/util/Date
#5 = Methodref #4.#61 // java/util/Date."<init>":()V
#6 = Fieldref #64.#65 // java/lang/System.out:Ljava/io/PrintStream;
#7 = Methodref #66.#67 // java/io/PrintStream.println:(I)V
#8 = Methodref #21.#61 // java/lang/Object."<init>":()V
#9 = Fieldref #1.#68 // com/jxm/wxvideo/LocalVariablesTest.count:I
#10 = String #69 // atguigu.com
#11 = Methodref #1.#70 // com/jxm/wxvideo/LocalVariablesTest.test2:(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
#12 = Class #71 // java/lang/StringBuilder
#13 = Methodref #12.#61 // java/lang/StringBuilder."<init>":()V
#14 = Methodref #12.#72 // java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
#15 = Methodref #12.#73 // java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
#16 = Methodref #12.#74 // java/lang/StringBuilder.toString:()Ljava/lang/String;
#17 = Methodref #66.#75 // java/io/PrintStream.println:(Ljava/lang/String;)V
#18 = String #76 // songhongkang
#19 = Double 130.5d
#21 = Class #77 // java/lang/Object
#22 = Utf8 count
#23 = Utf8 I
#24 = Utf8 main
#25 = Utf8 ([Ljava/lang/String;)V
#26 = Utf8 Code
#27 = Utf8 LineNumberTable
#28 = Utf8 LocalVariableTable
#29 = Utf8 args
#30 = Utf8 [Ljava/lang/String;
#31 = Utf8 test
#32 = Utf8 Lcom/jxm/wxvideo/LocalVariablesTest;
#33 = Utf8 num
#34 = Utf8 MethodParameters
#35 = Utf8 testStatic
#36 = Utf8 ()V
#37 = Utf8 date
#38 = Utf8 Ljava/util/Date;
#39 = Utf8 <init>
#40 = Utf8 this
#41 = Utf8 test1
#42 = Utf8 name1
#43 = Utf8 Ljava/lang/String;
#44 = Utf8 test2
#45 = Utf8 (Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
#46 = Utf8 dateP
#47 = Utf8 name2
#48 = Utf8 weight
#49 = Utf8 D
#50 = Utf8 gender
#51 = Utf8 C
#52 = Utf8 test3
#53 = Utf8 test4
#54 = Utf8 b
#55 = Utf8 a
#56 = Utf8 c
#57 = Utf8 test5Temp
#58 = Utf8 SourceFile
#59 = Utf8 LocalVariablesTest.java
#60 = Utf8 com/jxm/wxvideo/LocalVariablesTest
#61 = NameAndType #39:#36 // "<init>":()V
#62 = NameAndType #41:#36 // test1:()V
#63 = Utf8 java/util/Date
#64 = Class #78 // java/lang/System
#65 = NameAndType #79:#80 // out:Ljava/io/PrintStream;
#66 = Class #81 // java/io/PrintStream
#67 = NameAndType #82:#83 // println:(I)V
#68 = NameAndType #22:#23 // count:I
#69 = Utf8 atguigu.com
#70 = NameAndType #44:#45 // test2:(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
#71 = Utf8 java/lang/StringBuilder
#72 = NameAndType #84:#85 // append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
#73 = NameAndType #84:#86 // append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
#74 = NameAndType #87:#88 // toString:()Ljava/lang/String;
#75 = NameAndType #82:#89 // println:(Ljava/lang/String;)V
#76 = Utf8 songhongkang
#77 = Utf8 java/lang/Object
#78 = Utf8 java/lang/System
#79 = Utf8 out
#80 = Utf8 Ljava/io/PrintStream;
#81 = Utf8 java/io/PrintStream
#82 = Utf8 println
#83 = Utf8 (I)V
#84 = Utf8 append
#85 = Utf8 (Ljava/lang/Object;)Ljava/lang/StringBuilder;
#86 = Utf8 (Ljava/lang/String;)Ljava/lang/StringBuilder;
#87 = Utf8 toString
#88 = Utf8 ()Ljava/lang/String;
#89 = Utf8 (Ljava/lang/String;)V
{
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=3, args_size=1
0: new #1 // class com/jxm/wxvideo/LocalVariablesTest
3: dup
4: invokespecial #2 // Method "<init>":()V
7: astore_1
8: bipush 10
10: istore_2
11: aload_1
12: invokevirtual #3 // Method test1:()V
15: return
LineNumberTable:
line 8: 0
line 9: 8
line 10: 11
line 11: 15
LocalVariableTable:
Start Length Slot Name Signature
0 16 0 args [Ljava/lang/String;
8 8 1 test Lcom/jxm/wxvideo/LocalVariablesTest;
11 5 2 num I
MethodParameters:
Name Flags
args
public static void testStatic();
descriptor: ()V
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=3, args_size=0
0: new #1 // class com/jxm/wxvideo/LocalVariablesTest
3: dup
4: invokespecial #2 // Method "<init>":()V
7: astore_0
8: new #4 // class java/util/Date
11: dup
12: invokespecial #5 // Method java/util/Date."<init>":()V
15: astore_1
16: bipush 10
18: istore_2
19: getstatic #6 // Field java/lang/System.out:Ljava/io/PrintStream;
22: iload_2
23: invokevirtual #7 // Method java/io/PrintStream.println:(I)V
26: return
LineNumberTable:
line 15: 0
line 16: 8
line 17: 16
line 18: 19
line 21: 26
LocalVariableTable:
Start Length Slot Name Signature
8 19 0 test Lcom/jxm/wxvideo/LocalVariablesTest;
16 11 1 date Ljava/util/Date;
19 8 2 count I
public com.jxm.wxvideo.LocalVariablesTest();
descriptor: ()V
flags: ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
0: aload_0
1: invokespecial #8 // Method java/lang/Object."<init>":()V
4: aload_0
5: iconst_0
6: putfield #9 // Field count:I
9: aload_0
10: iconst_1
11: putfield #9 // Field count:I
14: return
LineNumberTable:
line 24: 0
line 5: 4
line 25: 9
line 26: 14
LocalVariableTable:
Start Length Slot Name Signature
0 15 0 this Lcom/jxm/wxvideo/LocalVariablesTest;
public void test1();
descriptor: ()V
flags: ACC_PUBLIC
Code:
stack=3, locals=3, args_size=1
0: new #4 // class java/util/Date
3: dup
4: invokespecial #5 // Method java/util/Date."<init>":()V
7: astore_1
8: ldc #10 // String atguigu.com
10: astore_2
11: aload_0
12: aload_1
13: aload_2
14: invokevirtual #11 // Method test2:(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
17: pop
18: getstatic #6 // Field java/lang/System.out:Ljava/io/PrintStream;
21: new #12 // class java/lang/StringBuilder
24: dup
25: invokespecial #13 // Method java/lang/StringBuilder."<init>":()V
28: aload_1
29: invokevirtual #14 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
32: aload_2
33: invokevirtual #15 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
36: invokevirtual #16 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
39: invokevirtual #17 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
42: return
LineNumberTable:
line 29: 0
line 30: 8
line 31: 11
line 32: 18
line 33: 42
LocalVariableTable:
Start Length Slot Name Signature
0 43 0 this Lcom/jxm/wxvideo/LocalVariablesTest;
8 35 1 date Ljava/util/Date;
11 32 2 name1 Ljava/lang/String;
public java.lang.String test2(java.util.Date, java.lang.String);
descriptor: (Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
flags: ACC_PUBLIC
Code:
stack=2, locals=6, args_size=3
0: aconst_null
1: astore_1
2: ldc #18 // String songhongkang
4: astore_2
5: ldc2_w #19 // double 130.5d
8: dstore_3
9: sipush 30007
12: istore 5
14: new #12 // class java/lang/StringBuilder
17: dup
18: invokespecial #13 // Method java/lang/StringBuilder."<init>":()V
21: aload_1
22: invokevirtual #14 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
25: aload_2
26: invokevirtual #15 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
29: invokevirtual #16 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
32: areturn
LineNumberTable:
line 36: 0
line 37: 2
line 38: 5
line 39: 9
line 40: 14
LocalVariableTable:
Start Length Slot Name Signature
0 33 0 this Lcom/jxm/wxvideo/LocalVariablesTest;
0 33 1 dateP Ljava/util/Date;
0 33 2 name2 Ljava/lang/String;
9 24 3 weight D
14 19 5 gender C
MethodParameters:
Name Flags
dateP
name2
public void test3();
descriptor: ()V
flags: ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
0: aload_0
1: dup
2: getfield #9 // Field count:I
5: iconst_1
6: iadd
7: putfield #9 // Field count:I
10: return
LineNumberTable:
line 44: 0
line 45: 10
LocalVariableTable:
Start Length Slot Name Signature
0 11 0 this Lcom/jxm/wxvideo/LocalVariablesTest;
public void test4();
descriptor: ()V
flags: ACC_PUBLIC
Code:
stack=2, locals=3, args_size=1
0: iconst_0
1: istore_1
2: iconst_0
3: istore_2
4: iload_1
5: iconst_1
6: iadd
7: istore_2
8: iload_1
9: iconst_1
10: iadd
11: istore_2
12: return
LineNumberTable:
line 48: 0
line 50: 2
line 51: 4
line 54: 8
line 55: 12
LocalVariableTable:
Start Length Slot Name Signature
4 4 2 b I
0 13 0 this Lcom/jxm/wxvideo/LocalVariablesTest;
2 11 1 a I
12 1 2 c I
public void test5Temp();
descriptor: ()V
flags: ACC_PUBLIC
Code:
stack=0, locals=2, args_size=1
0: return
LineNumberTable:
line 67: 0
LocalVariableTable:
Start Length Slot Name Signature
0 1 0 this Lcom/jxm/wxvideo/LocalVariablesTest;
}
SourceFile: "LocalVariablesTest.java"
IDEA使用jclasslib Bytecode Viewer 查看
局部变量