<分区>
Possible Duplicate:
What is the purpose of the expression “new String(…)” in Java?
你好,
1) 这两个语句有什么区别:
String s1 = "abc";
和
String s1 = new String("abc")
2) 由于我没有在第一条语句中使用 new,因此将如何创建字符串对象
谢谢
<分区>
Possible Duplicate:
What is the purpose of the expression “new String(…)” in Java?
你好,
1) 这两个语句有什么区别:
String s1 = "abc";
和
String s1 = new String("abc")
2) 由于我没有在第一条语句中使用 new,因此将如何创建字符串对象
谢谢
最佳答案
第一个将使用将在代码中编译的固定字符串。第二种变体使用固定的字符串并通过复制字符创建一个新的字符串。这实际上在内存中创建了一个新的独立对象,并且没有必要,因为字符串是不可变的。更多信息,您可以阅读this thread .
内部化字符串的主要优点是性能更好(例如通过缓存等)。
作为一个程序员,创建一个新的字符串并没有真正的好处,除非你通过下面的例子:
String sentence = "Lorem ipsum dolor sit amet";
String word = sentence.substring(5);
现在单词对句子有引用(子字符串不复制字符)。这在还使用句子时是有效的,但是当这个句子被丢弃时,你使用的内存比需要的多得多。在这种情况下,可以创建一个新的字符串:
word = new String(word);
关于Java 字符串对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2956202/