java - "java"与 intern() 的字符串比较为假

标签 java string-comparison string-interning

<分区>

下面是我的代码,不知道为什么两个结果不一样

这会打印出 true

// Building "test"
String str2 = new StringBuilder("te").append("st").toString();
System.out.println(str2.intern() == str2); // true;

但是这会打印出 false

// Building "java"
String str2 = new StringBuilder("ja").append("va").toString();
System.out.println(str2.intern() == str2); // false;

最佳答案

String “java”在其他地方实习,在您的代码之前执行的代码中(可能在某些 JDK 类中)。因此str2.intern()返回已经实习的“java”实例,它不是== str2 .

另一方面,String “测试”在你打电话之前没有被实习,所以你的 intern调用将其添加到字符串池中,这意味着 str2.intern()返回 str2在那种情况下。

关于java - "java"与 intern() 的字符串比较为假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56458366/

相关文章:

java - 如何在输出中获得 101 三角形?

c# - String.Intern 有这个值(value)吗?

c++ - 在编译时进行字符串实习以进行性能分析

java - Java 中的 == 运算符

Bash Shell 脚本 - 检测 Enter 键

java - 如何将 Micrometer 计时器与 webflux 端点一起使用

java - 在迭代它时从java中的集合中删除项目

java - 如何在Java中使用另一个方法的返回值?

c# - String.Equals vs String.Compare vs "=="实战。需要解释

c++ - 比较以 char 形式出现的字符串**