从 here 可以清楚地看出,在 Java 中组成 String
的实际字符实际上存储在 private final char value[];
字符数组中。
谁能帮我理解以下表达式的问题 String text = "Hello World";
- StringPool 中实际存储了什么?我读过很多地方,它是
String
文字。如果是这样,那么字符串对象和字符串文字之间到底有什么区别,因为两者都必须由char[]
支持
- 如果 String 引用被标记为 Constant (final),它是否也会存储在
Method Area
内的Runtime Constant Pool
中? - 如前所述here ,实际的
char[] 值
仅在堆上创建。因此,当在使用new
运算符创建的String
对象上调用intern()
方法时,将复制到 StringPool(假设它不是字符数组)?
编辑:
如前所述here , StringPool 被实现为一个 HashMap。那么 same 的关键和值(value)是什么?该值似乎不能是 char[] 值
,因为它是在堆上创建的。
最佳答案
没有这方面的专家,但我会试一试。
String text = "Hello World";
lcd(load a constant) 在常量池表中查找字符串。找到#2,它的地址是“Hello Word”,位于#14
引用:What is the purpose of the Java Constant Pool?
引用:https://www.ibm.com/developerworks/library/it-haggar_bytecode/#opcode
关于java - 字符串内存模型 - java6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49779669/