我一直以为如果我这样做String s = "Hello World".substring(0, 5),那么我就得到一个新的字符串s = "Hello".Java API文档中也记录了这一点:"返回一个新字符串,它是该字符串的子字符串".
但当我看到以下两个链接时,我开始怀疑.
Java中表达"new String(...)"的目的是什么?
基本上,他们说如果我使用String s = "Hello World".subString(0, 5),我仍然得到一个String,其中包含"Hello World"的char数组.
为什么?Java是否真的以这种方式实现了子串?为什么这样?为什么不返回一个全新的更短的子串?
转过来,为什么char[]在不需要时分配新的?这是一个有效的实现,因为它String是不可变的。它可以节省分配和内存。
| 归档时间: |
|
| 查看次数: |
19427 次 |
| 最近记录: |