【发布时间】:2012-05-31 08:32:42
【问题描述】:
我一直认为如果我这样做String s = "Hello World".substring(0, 5),那么我只会得到一个新字符串s = "Hello"。这也记录在 Java API 文档中:“返回一个新字符串,它是此字符串的子字符串”。
但是当我看到以下两个链接时,我开始怀疑了。
What is the purpose of the expression "new String(...)" in Java?
String constructor considered useless turns out to be useful after all
基本上,他们说如果我使用String s = "Hello World".subString(0, 5),我仍然会得到一个包含“Hello World”字符数组的字符串。
为什么? Java真的以这种方式实现子字符串吗?为什么会这样?为什么不直接返回一个全新的更短的子字符串?
【问题讨论】: