我知道你是否

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

创建了多少个实例?
  • 3个实例(因此,短语并不完全准确)。
  • 2个实例,s1s2(然后使用s3s1引用创建s2)
  • 最佳答案

    JLS不保证子字符串的任何重用。这里的“包含”仅表示该类在某处提到了完全相同的字符串文字。它不以“子字符串”的含义使用。

    07-28 01:22
    查看更多