use*_*271 3 java string stringbuilder string-interning
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);
Run Code Online (Sandbox Code Playgroud)
这个java代码将输出true,false.我想知道为什么.谢谢大家.
在这两种情况下,StringBuilder.toString()都会创建一个新字符串
在第一种情况下,String.intern()发现实习池中没有字符串"apple",因此将提供的字符串添加到池中并返回相同的引用 - 这就是它打印的原因true.
在第二种情况下,String.intern()发现实习池中已经有一个字符串"orange",因此返回b对它的引用 - 这是一个不同的引用,因此它打印出来false.
请注意,如果您在此代码开头之前有一行:
System.out.println("apple");
Run Code Online (Sandbox Code Playgroud)
那么你也会false从第一次比较中看到,出于同样的原因.
| 归档时间: |
|
| 查看次数: |
388 次 |
| 最近记录: |