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