可能重复:
What is the purpose of the expression “new String(…)” in Java?Java的字符串使用
什么时候应该使用new String()
当我应该使用""
可能重复:
What is the purpose of the expression “new String(…)” in Java?Java的字符串使用
什么时候应该使用new String()
当我应该使用""
如果你只是想初始化字符串变量,它的值,你还不知道“”应该罚款。 区别在于“”每次都使用相同的空字符串,而new String()
每次都会在java堆上创建新的对象。
当你想使用new String()
你可能需要一个StringBuffer 。
如果只是为了创建一个空字符串,然后使用“”。
只需使用""
。它是为此创建的。
你应该使用String构造,需要一个字符串参数时,该参数是一个非常大的字符串的一个子,和你所期望的子活更长的时间比大串唯一的一次。如
public String getDetails() {
String largeString = getMassivelyLargeStringFromSomewhere();
return new String(largeString.substring(2, 5));
}
的原因是,当你串,则实际上并不创建新的字符数组,你仅从原始字符串引用的字符阵列(具有偏移量和长度)。
因此,不能被垃圾收集从原来的字符串的原始字符数组因为较小的字符串保持它的一个引用。通过执行新的String(x),您可以复制数据并删除该引用,以便在更大的字符串可以被其他方法使用时,它将会执行。