加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

什么时候和哪里是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调用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读