繁体   English   中英

为什么使用append或者不同的StringBuilder的str == str.intern()的结果?

[英]Why are the results of of str == str.intern() for StringBuilder using append or not different?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM