Java字符串用法

Vir*_*gam 1 java string

可能重复:
Java中表达式"new String(...)"的目的是什么?

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

MeB*_*Guy 5

您应该使用带有String参数的String构造函数的唯一一次是当参数是一个非常大的字符串的子字符串时,并且您希望子字符串比大字符串长得多.如

public String getDetails() {
   String largeString = getMassivelyLargeStringFromSomewhere();
   return new String(largeString.substring(2, 5));
}
Run Code Online (Sandbox Code Playgroud)

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

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