我可能在这里偏离了标记,但是查看以下调试输出,我可以看到它引用了与(id=70)line.value
相同的字符串。name.value
这两个字符串仅相差.count
. 什么样的代码会输出类似的结果?这也是优化的结果吗?(如果这是一个有点愚蠢/不恰当的问题,请提前抱歉)。
问问题
101 次
2 回答
5
通常String.substring()
会这样做。或trim()
。(虽然肯定还有其他人,但这只是最明显的例子。)
由于String
s 是不可变的,因此可以安全地引用另一个字符串的内部 char 数组,以避免创建大量相同字符数据的冗余副本。
于 2012-08-20T22:55:36.910 回答
1
如您所见,Java 字符串由一个 backingchar[]
和offset
和指定该字符串后面count
部分的字段组成。char[]
这允许substring()
返回调用它的字符串的一部分的方法(如 )快速返回一个较小的字符串,而无需实际复制字符。
于 2012-08-20T22:56:39.897 回答