什么时候和哪里是String初始化/存储在Java源代码中?
发布时间:2020-12-14 05:46:41 所属栏目:Java 来源:网络整理
导读:这是我有的源代码 public class Koray { public static void main(String [] args) { System.out.println("This is a sample program."); } } 当我编译这个,我得到字节码.当我用十六进制查看器查看字节码时,我看到了一部分: 19 54 68 69 73 20 69 73 20 61
这是我有的源代码
public class Koray { public static void main(String [] args) { System.out.println("This is a sample program."); } } 当我编译这个,我得到字节码.当我用十六进制查看器查看字节码时,我看到了一部分: 19 54 68 69 73 20 69 73 20 61 20 73 61 6D 70 6C 65 20 70 72 6F 67 72 61 6D 2E 这可以读为 This is a sample program. 如果字节被解释为字符. 当我做的 javap -c Koray.class 做拆分这个类我看到: Compiled from "Koray.java" public class Koray { public Koray(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #3 // String This is a sample program. 5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: bipush 10 10: istore_1 11: return } 我的问题是,在反汇编的文本中看到这个String在哪里?我只是在评论中看到它. 解决方法
看到ldc
instruction?它从运行时常量池加载一个常量.这是你的字符串存储的位置.
要打印常量池,请将-verbose option添加到javap调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |