我引用了以下链接
Garbage collection and Strings
http://www.xyzws.com/Javafaq/what-is-string-literal-pool/3
Questions about Java's String pool
还有一些疑问请帮帮我
`public class StrPool
{
public static void main(String[] args)
{
String abc="hello";
String abcd="hello";
System.out.println(abc==abcd);
}
}
`
在上面的例子中 OP : true
因此我们可以确认这两个对象都是从同一个 String 对象引用的,对此我很清楚。
`String abc="hello World";
String abcd="hello";
System.out.println(abc==abcd);`
这给出输出:false
所以当两个String对象字面量相同时才进行String pool???
如果这样两个String对象会在String池中创建??
为什么第二个输出是假的???
我读到 String 类是不可变的
abc
和 abcd
有不同的对象引用然后不可变意味着
“第一个 String 对象将由 JVM 创建并给出对 abc 和 abcd 的两个引用”我说得对吗???
非常感谢…………
最佳答案
second 输出为 false
作为 string abc
和 abcd
具有不同的内容(文本)
是的,正如您所说,String 类是不可变的,即它们的内容不会更改,如果万一您更改了字符串文本,则< em>JVM 将分配一个新空间而不是改变它。
现在,当您创建一个带有一些文本的新 String
引用时,JVM 将检查该文本是否已经存在 并 < strong>if then 会将您的字符串引用到该文本或else 将在池中创建新文本
关于java - 当两个字符串具有相同的文字时执行字符串池(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11756366/