java - 当两个字符串具有相同的文字时执行字符串池(java)

标签 java string oop pool

我引用了以下链接

What is String pool in Java?

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 类是不可变的

abcabcd 有不同的对象引用然后不可变意味着

“第一个 String 对象将由 JVM 创建并给出对 abc 和 abcd 的两个引用”我说得对吗???

非常感谢…………

最佳答案

second 输出为 false 作为 string abcabcd具有不同的内容(文本)

是的,正如您所说,String 类是不可变的,即它们的内容不会更改,如果万一您更改了字符串文本,则< em>JVM 将分配一个新空间而不是改变它。

现在,当您创建一个带有一些文本的新 String 引用时,JVM 将检查该文本是否已经存在 并 < strong>if then 会将您的字符串引用到该文本或else 将在池中创建新文本

关于java - 当两个字符串具有相同的文字时执行字符串池(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11756366/

相关文章:

c# - 返回在 try catch 中创建的对象

python - 显式继承 'type'以实现python3.x中的元类

java - 具有静态方法的辅助类工厂?

java - Spring MongoDB - 查找两个日期之间的文档

java - java spring mvc 所需的 MultipartFile 参数 'file' 不存在

Ruby:将字符串中的所有整数递增+1

c - char *str = "…"和 char str[N] = "…"之间的区别?

java - 迁移JUL到log4j2,性能不及预期。什么地方出了错?

c# - C# 中的 Java SHA1 等效项

c - Printf 打印不需要的换行符