gpt4 book ai didi

java - 为什么 str == str.intern() for StringBuilder using append or not different 的结果?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:35 24 4
gpt4 key购买 nike

All.I 有一个像这样的 java 代码片段:

 String a = new StringBuilder("app").append("le").toString();
System.out.println(a.intern() == a);
String b = new StringBuilder("orange").toString();
System.out.println(b.intern() == b);

这段java代码会输出true,false。我想知道为什么。谢谢大家。

最佳答案

在这两种情况下,StringBuilder.toString() 都会创建一个新字符串。

在第一种情况下,String.intern() 发现实习生池中没有字符串“apple”,因此将提供的字符串添加到池中并返回相同的引用 - 这就是为什么它打印 true

在第二种情况下,String.intern() 发现实习生池中已经有一个字符串“orange”,因此返回对该字符串的引用 - 这是对 的不同引用b,因此它打印 false

请注意,如果您在这段代码开始之前有一行:

System.out.println("apple");

那么出于同样的原因,您也会在第一次比较中看到 false

关于java - 为什么 str == str.intern() for StringBuilder using append or not different 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39929715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com