好的,这个问题是这个问题的延伸
Java 字符串:"String s = new String("silly");"
上面的问题和这个问题问的一样,但我有一个新的怀疑点。
根据Effective Java上述问题的答案,我们不应该这样做String s = new String("a new string");,因为那会创建不必要的对象。
我不确定这个结论,因为我认为 Java 正在做自动字符串实习,这意味着对于一个字符串,无论如何内存中只有一个副本。
那么让我们看看String s = new String("a new string");。
"a new string"已经是在内存中创建的字符串。
当我这样做时String s = new String("a new string");,那s是也"a new string"。所以根据automatic string interning,s应该是指向 的同一个内存地址"a new string"吧?
那么我们怎么能说我们创造了不必要的对象呢?