符号引用
public class RefTest { public void method() { int i = 10; String str = "test"; } }
使用javap -v 反编译后
Last modified 2020-4-17; size 423 bytes MD5 checksum 8b46cded3501cd81c9cef4a1d03dc398 Compiled from "RefTest.java" public class com.classloader.RefTest minor version: 0 major version: 52 flags: ACC_PUBLIC, ACC_SUPER Constant pool: #1 = Class #2 // com/classloader/RefTest #2 = Utf8 com/classloader/RefTest #3 = Class #4 // java/lang/Object #4 = Utf8 java/lang/Object #5 = Utf8 <init> #6 = Utf8 ()V #7 = Utf8 Code #8 = Methodref #3.#9 // java/lang/Object."<init>":()V #9 = NameAndType #5:#6 // "<init>":()V #10 = Utf8 LineNumberTable #11 = Utf8 LocalVariableTable #12 = Utf8 this #13 = Utf8 Lcom/classloader/RefTest; #14 = Utf8 method #15 = String #16 // test #16 = Utf8 test #17 = Utf8 i #18 = Utf8 I #19 = Utf8 str #20 = Utf8 Ljava/lang/String; #21 = Utf8 SourceFile #22 = Utf8 RefTest.java { public com.classloader.RefTest(); descriptor: ()V flags: ACC_PUBLIC Code: stack=1, locals=1, args_size=1 0: aload_0 1: invokespecial #8 // Method java/lang/Object."<init>":()V 4: return LineNumberTable: line 3: 0 LocalVariableTable: Start Length Slot Name Signature 0 5 0 this Lcom/classloader/RefTest; public void method(); descriptor: ()V flags: ACC_PUBLIC Code: stack=1, locals=3, args_size=1 0: bipush 10 2: istore_1 3: ldc #15 // String test 5: astore_2 6: return LineNumberTable: line 6: 0 line 7: 3 line 8: 6 LocalVariableTable: Start Length Slot Name Signature 0 7 0 this Lcom/classloader/RefTest; 3 4 1 i I 6 1 2 str Ljava/lang/String; } SourceFile: "RefTest.java"
原文:https://www.cnblogs.com/caoxb/p/12735532.html