【Java】+演算子/concatメソッド/StringBuilderを使って文字列(String)を連結する!

文字列(String)を連結させるには+演算子が思い浮かぶと思います。

しかし、「+」演算子の他にもconcatメソッド、StringBuilderクラスを使うことで文字列の連結を行うことができ、複数の文字列の連結を行いたい場合は「+」演算子よりもStringBuilderクラスを使った方が効率よく処理が行われます。

今回は
+演算子
concatメソッド
StringBuilder
を使って文字列(String)を連結を行います。

+演算子とは

+演算子とは数値型の値をString型の文字列へ変換することができます。

+演算子の書き方

+演算子の構文は下記となります。

文字列と文字列2の間に「+」を書くことで文字列1と文字列2を連結させることができます。
数値の場合は、加算された値が出力されます。

toStringの()に数値の変数を指定することで指定した数値をString型へ変換することができます。

concatメソッドとは

concatメソッドは数値型の値をString型の文字列へ変換することができます。

concatメソッドの書き方

>concatメソッドの構文は下記となります。

concatの()に文字列を指定することでconcatの前の文字列と連結させることができます。
その為、変数の値は「文字列1文字列2」というようになります。

StringBuilderとは

StringBuilderは、Stringクラス同様、文字列を扱うクラスになります。

StringBuilderの書き方

StringBuilderの構文は下記となります。

StringBuilder型のインスタンスを作成します。
そうすることで、文字列を作成することができます。

文字列を連結させるサンプルコード

文字列(String)を数値に変換するサンプルコードを紹介します。

+演算子を使用した場合

出力結果

+演算子を使用し、文字列を連結します。

Long型からString型へ変換されました。

concatメソッドを使用した場合

出力結果

concatメソッドを使用し、文字列を連結しました。

concatメソッドによって文字列が連結されています。

StringBuilderを使用した場合

出力結果

StringBuilderを使用し、文字列を連結しましょう。

StringBuilderクラスのappendメソッドによって文字列が連結されています。

StringBuilderクラス使用した場合、toStringメソッドを呼び出すことで、処理後の文字列を取得することができます。

今回のポイント

文字列を連結するには3つの方法がある

文字列を連結するには+演算子を使用するかconcatメソッドを使用するかStringBuilderクラスを使用する

• 「+」演算子で、連結したい文字列同士を「+」でつなげると文字列を連結できる

• StringBuilderクラスのappendメソッドで文字列を連結するにはパラメータに連結したい文字列を設定する

• 複数の文字列連結を行う場合は、「+」演算子を使用するより、StringBuilderクラスを使った文字列連結の方が効率よく処理を行える

• concatメソッドで文字列を連結するにはappendメソッドと同様にパラメータに連結したい文字列を設定する

補足

値を変更できないインスタンス

「String」クラスは、インスタンス作成後に値を変更することができません。
そのようなクラスを「イミュータブル」(immutable)」なクラスといいます。
「String」クラスは、文字列情報をchar配列の形で持っています。

文字列置換、連結などを行うメソッドはありますが、自身の文字列情報を変更するのではなく、変更後の情報を持った新しい文字列を作成して返すようになっています。
もし、自身の文字列情報を変更できてしまうと、同じインスタンスを参昭している部分に影響が出てしまうため、このように設計されています。

出力結果

str1:abc
str2:ABC

文字列を大文字にするtoUpperCase(ソッドを使用しても、呼出元のインスタンス「str1」の内容は変更されませんが、代わりに、toUpperCaseメソッドの実行結果を格納した新しい文字列を戻します。
その為、サンプルコードでは「str1」の内容はそのままで、「str1」の小文字を大文字に変換した結果が「str2」に 格納されています。

他にも「Integer」クラスや「Long」クラスなどのプリミティブ型のラッパークラスが「イミュータブル」なクラスです。

StringBuilderとStringBufferの違い

文字列の連結を行うクラスとして、「StringBuilder」クラスと「StringBuffer」クラスがあります。

StringBufferクラスは同期化を保証していますが、StringBuilderクラスは同期化を保証しておらず、その分、動作が高速です。
普段は高速な「StringBuilder」クラスを使い、同じインスタンスに複数のスレッドでアクセスする場合は「StringBuffer」クラスを使ようにしてください。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し