编程语言
首页 > 编程语言> > java – 为什么str == str.intern()的结果对于StringBuilder使用append或没有不同?

java – 为什么str == str.intern()的结果对于StringBuilder使用append或没有不同?

作者:互联网

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");

那么你也会因为同样的原因从第一次比较中看到错误.

标签:string-interning,java,string,stringbuilder
来源: https://codeday.me/bug/20190722/1502254.html