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.4k
1 个回答

个人观点:

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题