JVM 字符串和 字符串常量池的疑问

  1. String s = "aaa", 字面量aaa 在运行时常量池和字符串常量池各一份吗? 如果不是,那么HSDB中查看运行时常量池中有COnstant_utf8 = aaa 是怎么理解
  2. String s = new String ("bbb"), bbb会放入字符串常量池吗
  3. 字符串是在是么时候放入字符串常量池的? 我的理解是:对于String s = "aaa", 首先 aaa是在运行时常量池中的, 在真正执行ldc指令的时候, 触发了 创建String对象,放入字符串常量池中?


回答:

个人观点:

  1. 是的。
  2. 不会,得加intern。
  3. ldc获取的时候已经有了。除开intern动态加载的,应该在class加载完成后,运行时常量池会从class常量池里面拿到。string常量池里面也就有了。

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

以上是 JVM 字符串和 字符串常量池的疑问 的全部内容, 来源链接: utcz.com/p/944487.html

回到顶部