因为String和StringBuilder(或StringBuffer)是出于不同目的而设计的,所以我可以理解一半差异的原因(例如字符串没有{{1}和append
)。但是,有几点仍让我感到困惑。
仅举几例:
delete
和getBytes
,但StringBuilder只有getChars
。getChars
个不同的功能。replace
和toLowerCase
,而StringBuilder没有。{/ li>
toUpperCase
,而StringBuilder没有。{/ li>
我知道他们是设计,但为什么?
答案 0 :(得分:2)
String和StringBuilder的设计和实现相隔十多年。 Java 1.0中的一个好主意在Java 5.0中被认为不是一个好主意。
e.g。 trim()修剪字符< = space。这包括图形字符,但不是所有的空格,例如(char)160是一个空格,但没有修剪过。
答案 1 :(得分:-1)
自JDK 5发布以来, StringBuffer 已经添加了一个等效类,专为单线程, StringBuilder 使用而设计。 StringBuilder类通常应优先于此使用,因为它支持所有相同的操作,但它更快,因为它执行 no synchronization 。