这是OpenJDK 源代码StringBuilder
:
public String toString() {
// Create a copy, don't share the array
return new String(value, 0, count);
}
具有这些参数的构造函数的来源是:String
public String(char value[], int offset, int count) {
if (offset < 0) {
throw new StringIndexOutOfBoundsException(offset);
}
if (count < 0) {
throw new StringIndexOutOfBoundsException(count);
}
// Note: offset or count might be near -1>>>1.
if (offset > value.length - count) {
throw new StringIndexOutOfBoundsException(offset + count);
}
this.offset = 0;
this.count = count;
this.value = Arrays.copyOfRange(value, offset, offset+count);
}
所以是的,它确实String
每次都会创建一个新的,是的,它会复制char[]
每次。
需要注意的是,这是 的一种实现toString
,而另一种实现可能明显不同。