Java

Java StringBuilderの使い方・文字列の連結

Java StringBuilderの使い方・文字列の連結

2つ以上の文字列をつなぐことを、文字列の連結(conacation)といいます。
最も簡単な方法は、Stringクラスで+演算子を用いる方法です。

SPONSORED LINK

ただしStringクラスでは、問題点がある

上記のように問題なく処理が動き、実行結果として出力されていますが、
Stringクラスの文字連結には問題点があります。

それはStringクラスのインスタンスの不変性にあります。
String インスタンスが保持する文字列情報は、インスタンス化した際に初期化されるので、以後二度と変化することはありません。(値の変更不可)

インスタンスについての詳細な説明はここから

Stringクラスに限らず「インスタンス化の後に内容が絶対に変化しない」よう
設計されたクラスのことを  不変であると言います。

上記のように一見Stringインスタンスは中身を書き換える事ができるように見えます。
しかし実際は下記のようなことが起きています。

Helloという文字列情報を持ったStiringインスタンスが大きくなり、
“HelloWord”という情報を持つということは決してありません。
演算子にによる(+)連結が行われた場合は、古いインスタンスは捨てられ連結後の情報を
持つ新しいインスタンがnewにより生成されることになります。

簡潔に説明すると+演算子で処理した回数の文字連結は、
内部でその回数分のnewを行っています。
newによるインスタンス生成は、計算などに比べてJVMに大きな負担がかかる原因となる為、
何百回、何千回、何万回と大きくなるにつれて、全体として遅い処理になってしまいます。

その問題を解決するためにStringBuilderを使います。

SPONSORED LINK


StringBuilderの使い方

new String(sb)やString.valueOf(sb)でもString変換が可能です。
toString メソッドを使って文字列ビルダから文字列を取得するのは、
処理が高速になるので一般的に推奨されています。

StringBuilderやStringBufferは可変なクラスとして設計されています。
newを使用することなくappend()メソッドで文字列を追記していくこと設計に
なっているので高速に処理をすることが可能です。

StringBufferクラスの利用方法はStringBuilderと全く同じになります。

  • String: 不変
  • StringBuilder:可変
  • StringBuffer: 可変


StringBuilderとStringBufferの違いとは?

StringBuilderとStringBufferの違いは、
並列処理を利用しているか利用していないかの場合に使い分けをします。

並列処理とは、複数の処理を同時に行うためのJavaのしくみです。

並列処理を利用している場合に、
StringBuilderクラスを利用すると不具合になる可能性があります。
その為、代わりにStringBufferクラスを使用します。

  • StringBuilder:並列処理 ✕
  • StringBuffer: 並列処理 ○
SPONSORED LINK

ピックアップ記事

  1. Java クラスのインスタンス化・初期化とは?
  2. Java 9が正式リリース
  3. Java入門 JavaプラットフォームやJava言語の仕組み

関連記事

  1. Java

    Java オブジェクト指向とは?初心者向けにわかりやすい概要!!

    オブジェクト指向の特徴は開発対象となるシステム化対象領域を、「モノ…

  2. Java

    Java インストールしたJREとEclipseを連動させる(設定)手順を解説!!

    JREはJavaプログラムの実行環境です。一般ユーザはJavaアプ…

  3. Java

    Java yyyyMMddからyyyy/MM/ddへ変換して日付判定する方法

    データベースから日付情報A(char長8)の文字列を取得して日付の判定…

  4. Java

    Java 文字列をequalsで比較判定する方法

    文字列を比較する際に使用するequalsメソッドについて解説し…

  5. Bronze

    Java オブジェクト指向の解説・カプセル化

    カプセル化とは、情報へのアクセスや動作の処理を隠蔽することでアクセ…

  6. Java

    Java JREとJDKの違いと関係性は!?環境変数設定と確認までの手順解説!!

    そもそも、JREとJDKの違いを人に説明できますか?Javaのプロ…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Recommended Article

Pickup

  1. Java

    Eclipse Java動作環境の構築とインストール
  2. Java

    Java プロパティファイル(property)の作成と読み込み、編集方法、配置…
  3. Java

    Java 命名規則やルールを解説!フェーズの参考情報(パッケージ,クラス,メソッ…
  4. Java

    Java JREとJDKの違いと関係性は!?環境変数設定と確認までの手順解説!!…
  5. Java

    Java String型とDate型の変換・Calendarの関係性
PAGE TOP

Copyrighted Image