0a 0006 0016 Methodref class#6 nameAndType#22因为还未解析第6个及第22个常量,这里先使用占位符代替。
2a aload_0可以看出,在初始化方法中,先后将类自身引用this_class、类中的变量a和变量b入栈,并为两个变量赋值,之后方法结束。
b7 0001 invokespecial #1 //Method java/lang/Object."":()V
2a aload_0
04 iconst_1
b5 0002 putfield #2 //Field a:I
2a aload_0
12 03 ldc #3 //String 2
b5 0004 putfield #4 //Field b:Ljava/lang/String;
b1 return
0002 0012 0013 0001 000d 0000 001d private method3 ()Ljava/lang/String;这样,我们就在字节码中解析出了类中的方法。字节指令是方法实现的核心,字节指令在任何一个JVM中都对应的是一样的操作,因此字节码文件可以实现跨平台运行。但是每一个平台中对字节指令的实现细节各有不同,这是Java程序在不同平台间真正"跨"的一步。
Code
0001 0001 00000005
2a b4 0004 b0 获取变量b并返回
0000
LineNumberTable
0001 000e 00000006 0001 0000 000e //line 14 : 0
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |