Java文件
package com.weixuan.test;
public class MyTest {
private int age;
private String name;
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
}
}
使用javac -g:vars MyTest.java编译,显示localvariable
C:\Users\weixu_000\Desktop>javac -g:vars MyTest.java
C:\Users\weixu_000\Desktop>javap -verbose MyTest.class
Classfile /C:/Users/weixu_000/Desktop/MyTest.class
Last modified 2015-7-5; size 708 bytes
MD5 checksum 2d2527c48aba8637fbf99840391879aa
public class com.weixuan.test.MyTest
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Methodref #5.#28 // java/lang/Object."":()V
#2 = Fieldref #4.#29 // com/weixuan/test/MyTest.age:I
#3 = Fieldref #4.#30 // com/weixuan/test/MyTest.name:Ljava/
lang/String;
#4 = Class #31 // com/weixuan/test/MyTest
#5 = Class #32 // java/lang/Object
#6 = Utf8 age
#7 = Utf8 I
#8 = Utf8 name
#9 = Utf8 Ljava/lang/String;
#10 = Utf8
#11 = Utf8 ()V
#12 = Utf8 Code
#13 = Utf8 LocalVariableTable
#14 = Utf8 this
#15 = Utf8 Lcom/weixuan/test/MyTest;
#16 = Utf8 getAge
#17 = Utf8 ()I
#18 = Utf8 getName
#19 = Utf8 ()Ljava/lang/String;
#20 = Utf8 setAge
#21 = Utf8 (I)V
#22 = Utf8 setName
#23 = Utf8 (Ljava/lang/String;)V
#24 = Utf8 main
#25 = Utf8 ([Ljava/lang/String;)V
#26 = Utf8 args
#27 = Utf8 [Ljava/lang/String;
#28 = NameAndType #10:#11 // "":()V
#29 = NameAndType #6:#7 // age:I
#30 = NameAndType #8:#9 // name:Ljava/lang/String;
#31 = Utf8 com/weixuan/test/MyTest
#32 = Utf8 java/lang/Object
{
public com.weixuan.test.MyTest();
descriptor: ()V
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."
":()V
4: return
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lcom/weixuan/test/MyTest;
public int getAge();
descriptor: ()I
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: getfield #2 // Field age:I
4: ireturn
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lcom/weixuan/test/MyTest;
public java.lang.String getName();
descriptor: ()Ljava/lang/String;
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: getfield #3 // Field name:Ljava/lang/String;
4: areturn
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lcom/weixuan/test/MyTest;
public void setAge(int);
descriptor: (I)V
flags: ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
0: aload_0
1: iload_1
2: putfield #2 // Field age:I
5: return
LocalVariableTable:
Start Length Slot Name Signature
0 6 0 this Lcom/weixuan/test/MyTest;
0 6 1 age I
public void setName(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
0: aload_0
1: aload_1
2: putfield #3 // Field name:Ljava/lang/String;
5: return
LocalVariableTable:
Start Length Slot Name Signature
0 6 0 this Lcom/weixuan/test/MyTest;
0 6 1 name Ljava/lang/String;
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=0, locals=1, args_size=1
0: return
LocalVariableTable:
Start Length Slot Name Signature
0 1 0 args [Ljava/lang/String;
}
对应的字节码