为什么String和StringBuilder / StringBuffer有不同的方法集?

时间:2012-07-09 14:37:30

标签: java string stringbuilder stringbuffer

因为StringStringBuilder(或StringBuffer)是出于不同目的而设计的,所以我可以理解一半差异的原因(例如字符串没有{{1}和append)。但是,有几点仍让我感到困惑。

仅举几例:

  • String同时包含deletegetBytes,但StringBuilder只有getChars
  • String和StringBuilder分别具有getChars个不同的功能。
  • String有replacetoLowerCase,而StringBuilder没有。{/ li>
  • String有toUpperCase,而StringBuilder没有。{/ li>

我知道他们是设计,但为什么?

2 个答案:

答案 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