Java字符串用法

时间:2011-03-27 18:08:36

标签: java string

  

可能重复:
  What is the purpose of the expression “new String(…)” in Java?

我应该何时使用new String(),何时应使用""

5 个答案:

答案 0 :(得分:5)

你应该使用一个带String参数的String构造函数的唯一一次是当参数是一个非常大的字符串的子字符串时,你希望子字符串的寿命比大字符串长得多。比如

public String getDetails() {
   String largeString = getMassivelyLargeStringFromSomewhere();
   return new String(largeString.substring(2, 5));
}

原因是,当你做substring时,你实际上并没有创建一个新的char数组,只是引用了原始String中的字符数组(带有偏移量和长度)。

因此,原始字符串中的原始char数组不能被垃圾收集,因为较小的字符串会保留对它的引用。通过执行新的String(x),您可以复制数据并删除引用,这样当更大的字符串可以通过gc进行处理时,它将会显示。

答案 1 :(得分:4)

如果您只是尝试初始化一个字符串变量,其值还不知道“”应该没问题。 差异是“”每次都使用相同的空字符串,而new String()每次都会在java堆上创建新对象。

答案 2 :(得分:2)

当您考虑使用new String()时,您可能需要StringBuffer

答案 3 :(得分:1)

如果仅用于创建空字符串,请使用“”。

答案 4 :(得分:1)

只需使用""即可。它是为此而创建的。