Java 字符串对象创建

标签 java string

<分区>

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/

相关文章:

unix 中的 java 类路径

java - 模拟 - 缺少方法调用异常

java - 列表与列表<对象>?

java - java中读取32位二进制数

java - 如何使用 fastxml jackson 忽略我没有的对象

sql-server - 检查字符串是否不包含另一个字符串

python - 用 pandas 将字符串拆分为数字和文本

c# - 使用定界符拆分字符串,但在 C# 中保留结果中的定界符

arrays - 在python中将stdin行转换为 "float/int"数组的更简单方法

javascript - 正则表达式匹配不在括号内的字符串