我知道你是否
for (condition) {
String s = "hi there";
}
在所有迭代中仅创建一个
String
实例,而String s = new String("hi there");
不会在每次迭代中创建一个新实例。但是,从Joshua Bloch:第2章第5项(第20页)中阅读有效Java时,它指出:
AFAIK没有说碰巧是相同的字符串文字,它说包含。
阅读[JLS, 3.10.5]找不到对此的任何确切引用,我对此表示怀疑。
提供以下代码段:
String s1 = "hi ";
String s2 = "there";
String s3 = "hi there";
创建了多少个实例?
s1
和s2
(然后使用s3
和s1
引用创建s2
)最佳答案
JLS不保证子字符串的任何重用。这里的“包含”仅表示该类在某处提到了完全相同的字符串文字。它不以“子字符串”的含义使用。