java类无法编译class_Java类编译后Class文件概述(下)

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;

}

对应的字节码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值