2

我可能在这里偏离了标记,但是查看以下调试输出,我可以看到它引用了与(id=70)line.value相同的字符串。name.value这两个字符串仅相差.count. 什么样的代码会输出类似的结果?这也是优化的结果吗?(如果这是一个有点愚蠢/不恰当的问题,请提前抱歉)。 在此处输入图像描述

4

2 回答 2

5

通常String.substring()会这样做。或trim()。(虽然肯定还有其他人,但这只是最明显的例子。)

由于Strings 是不可变的,因此可以安全地引用另一个字符串的内部 char 数组,以避免创建大量相同字符数据的冗余副本。

于 2012-08-20T22:55:36.910 回答
1

如您所见,Java 字符串由一个 backingchar[]offset和指定该字符串后面count部分的字段组成。char[]

这允许substring()返回调用它的字符串的一部分的方法(如 )快速返回一个较小的字符串,而无需实际复制字符。

于 2012-08-20T22:56:39.897 回答