0

StringStringBuilder (またはStringBuffer ) は異なる目的で設計されているため、違いの半分の理由 (String にはappendandがないなどdelete) が理解できます。しかし、まだ私を混乱させるいくつかの点があります。

いくつか例を挙げると:

  • String には and の両方がgetBytesありgetCharsますが、StringBuilder には しかありませんgetChars
  • String と StringBuilder はreplaceそれぞれ異なる機能を持っています。
  • String にはtoLowerCaseとがありtoUpperCaseますが、StringBuilder にはありません。
  • String には がありますがtrim、StringBuilder にはありません。

設計によるものであることは知っていますが、なぜですか?

4

2 に答える 2

2

StringとStringBuilderは、10年以上離れて設計および実装されています。Java 1.0で良いアイデアだったものは、Java5.0では良いアイデアとは見なされませんでした。

たとえば、trim()は文字<=スペースをトリミングします。これにはグラフィック文字が含まれますが、すべての空白ではありません。たとえば、(char)160は空白ですが、トリミングされていません。

于 2012-07-09T15:03:00.147 に答える
-1

リリース JDK 5 の時点で、StringBufferは、単一のスレッドで使用するために設計された同等のクラス StringBuilder で補足されています。StringBuilder クラスは通常、これより優先して使用する必要があります。これは、同じ操作をすべてサポートしていますが、同期を実行しないため高速です。

于 2012-07-09T15:47:17.540 に答える