首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串内存模型- java6

字符串内存模型- java6
EN

Stack Overflow用户
提问于 2018-04-11 15:59:51
回答 1查看 82关注 0票数 3

这里中可以清楚地看出,构成String的实际字符实际上存储在private final char value[];字符数组中。

有人能帮我理解表达式String text = "Hello World";的下列问题吗?

  1. 实际存储在StringPool中的是什么?我读过许多地方,它是String文字。如果是这样的话,字符串对象和字符串文本之间的区别到底是什么,因为两者都必须由char[]来支持。
  2. 如果字符串引用被标记为常量(最终),那么它也会存储在Runtime Constant Pool中的Method Area中吗?
  3. 正如前面提到的这里,实际的char[] value仅在堆上创建。因此,当对使用intern()运算符创建的String对象调用new方法时,会将什么复制到StringPool (假设它不是字符数组)?

编辑:

如前所述,这里将StringPool实现为HashMap。那么,同样的关键和价值是什么呢?该值似乎不能是char[] value,因为相同的值是在堆上创建的。

EN

回答 1

Stack Overflow用户

发布于 2018-04-11 16:59:51

这方面没有专家,但我会试一试。

代码语言:javascript
复制
String text = "Hello World";

lcd(load a常数)在常量池表中查找字符串。发现#2,地址为"Hello Word“,地址是#14

参考资料:Java常量池的用途是什么?

参考资料:字节码/操作码

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49779669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档