最終更新:2019-11-24 (日) 06:46:46 (1609d)
Java/文字列
java.lang.String
- 文字列を表す
String.equalsを使う
- 文字列リテラルから暗黙的に生成されるStringオブジェクトは文字列が一致していれば同一のStringオブジェクト
- 実行時に生成されるStringオブジェクトは内容が同じでも同一のStringオブジェクトにはならない
- StringBuilderと比較するときはcontentEqualsを使う
java.lang.StringBuffer
- スレッドセーフな可変の文字列。
java.lang.StringBuilder
- 文字の可変シーケンス
- StringBufferと互換性があるAPIを提供するが、同期化は保証されない
- 文字列バッファが単一のスレッド (一般的なケース) により使用されていた場合のStringBufferの簡単な代替として使用されるよう設計されている
- ほとんどの実装で高速に実行されるので、可能な場合は、StringBufferよりも優先して使用することを推奨
- JDK 5~
- 比較を行うときはtoStringする
文字列連結
- Java言語は、文字列連結演算子 ( + )、およびその他のオブジェクトから文字列への変換に対する特別なサポートを提供します。
- 文字列連結はStringBuilder (またはStringBuffer) クラスとその append メソッドを使って実装されています。
- Stringを+=するときは内部的にStringBuilder.appendが行われ、最後にtoStringが処理される。
- 繰り返す場合はStringBuilderにappendして最終的にtoStringしたほうが高速
比較
- String.equals(Object anObject)
- String.contentEquals?(CharSequence cs)
- String.contentEquals?(StringBuffer sb)