JVM 字符串和 字符串常量池的疑问
- String s = "aaa", 字面量aaa 在运行时常量池和字符串常量池各一份吗? 如果不是,那么HSDB中查看运行时常量池中有COnstant_utf8 = aaa 是怎么理解
- String s = new String ("bbb"), bbb会放入字符串常量池吗
- 字符串是在是么时候放入字符串常量池的? 我的理解是:对于String s = "aaa", 首先 aaa是在运行时常量池中的, 在真正执行ldc指令的时候, 触发了 创建String对象,放入字符串常量池中?
回答:
个人观点:
- 是的。
- 不会,得加intern。
- ldc获取的时候已经有了。除开intern动态加载的,应该在class加载完成后,运行时常量池会从class常量池里面拿到。string常量池里面也就有了。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
以上是 JVM 字符串和 字符串常量池的疑问 的全部内容, 来源链接: utcz.com/p/944487.html