0

因为StringStringBuilder(或StringBuffer)是为不同的目的而设计的,所以我可以理解造成一半差异的原因(例如 String 没有appendand delete)。但是,有几点仍然让我感到困惑。

仅举几例:

  • String 两者都有getBytesgetChars但 StringBuilder 只有getChars.
  • String 和 StringBuilderreplace分别具有不同的功能。
  • String 有toLowerCaseand toUpperCase,而 StringBuilder 没有。
  • String 有trim,而 StringBuilder 没有。

我知道它们是设计使然,但为什么呢?

4

2 回答 2

2

String 和 StringBuilder 的设计和实现相隔十多年。Java 1.0 中的好主意在 Java 5.0 中被认为不是好主意。

例如 trim() 修剪字符 <= 空格。这包括图形字符,但并非所有空格,例如 (char) 160 都是空格,但未修剪。

于 2012-07-09T15:03:00.147 回答
-1

从 JDK 5 开始,StringBuffer已经补充了一个等效的类,该类旨在供单个线程使用,即StringBuilder。通常应该优先使用 StringBuilder 类而不是这个类,因为它支持所有相同的操作,但速度更快,因为它不执行同步

于 2012-07-09T15:47:17.540 回答