【Java】文字列の連結方法をサンプルコードを使って解説
文字列連結は、その名の通り、2つ以上の小さな文字列を結合して大きな文字列を作成します。
例えば、人の姓と名を連結してフルネームを作成できます。
みなさんは文字列の連結といえば「+」を使って連結させるというイメージを持つ方が多いかと思います。
しかし、Javaには文字列を連結する方法が「+」以外にも複数ありますので
今回はそれらをサンプルコードを使って解説します。
文字列の連結の仕方
連結演算子(+)
最も簡単な方法は+演算子を使用することです。
これは皆さんでもイメージできるかと思います。
1 |
String s = "こんにちは" + "こんばんは"; |
+演算子はバイナリ演算子であり、両方のオペランドが整数の場合は
主に2つの数値を加算するために使用されますが、両方または最初のオペランドが文字列の場合は
文字列を連結するためにも使用できます。
また、この演算子を使用して、空の文字列を整数と連結することにより、
Javaで整数を文字列に変換することもできます。
例えば、「Flytechの」+「案件紹介」とすることで、「Flytechの案件紹介」を生成したり、
「 “” + 123」は文字列”123″を生成したりすることもできます。
StringBuffer.append()メソッド
java.lang.StringBuffer.appendメソッドは、指定された文字列を
この文字シーケンスに追加します。String引数の文字が順に追加され、
このシーケンスの長さが引数の長さの分だけ増加します。
1 |
public StringBuffer.append(String str) |
サンプルコード
1 2 3 4 5 6 7 8 |
public class Test { public static void main(String args[]) { StringBuilder sb = new StringBuilder("Test"); sb.append("String Builder"); System.out.println(sb); } } |
出力結果
Test String Builder
StringBuilder.append()メソッド
java.lang.StringBuilder.append(string str)メソッドは、
引数のこの文字に指定された文字列を追加し、引数の長さによって、
このシーケンスの長さを増加させるために付加されています。
1 |
public StringBuilder append(String str) |
サンプルコード
1 2 3 4 5 6 7 8 |
public class Test { public static void main(String args[]) { StringBuffer sb = new StringBuffer("Test"); sb.append("String Buffer"); System.out.println(sb); } } |
出力結果
Test String Buffer
これらのクラスはどちらも変更可能なStringを変更するために使用されます。
連結を含む文字列上の任意の操作は、常に新しいStringオブジェクトを生成します。
+ 演算子を使用してStringをループで連結すると、ヒープがいっぱいになり、
ガベージコレクターに多くの作業を作成する可能性のある小さなStringオブジェクトがたくさん作成されます。
このような問題を回避するため、StringBufferとStringBuilderを提供しています。
どちらも、連結した場合に新しいStringオブジェクトを生成しない可変の文字列を作成するために使用できます。
String.concat()メソッド
このメソッドは、1つの文字列を別の文字列の最後に追加します。
メソッドに渡された文字列の値を文字列の末尾に追加して、
このメソッドを呼び出すために使用される文字列を返します。
1 |
public String concat(String string2) |
サンプルコード
1 2 3 |
String a = "Test "; String b = "Concat"; System.out.println(a.concat(b)); |
出力結果
Test Concat
コードを書いて実施
今回紹介した演算子やそれぞれのメソッド使って文字列の連結を行ってみます。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public class sample { public static void main(String args []){ String firstname = "山田 " ; String lastname = "太郎" ; // +演算子 String name = firstname + lastname; System.out.println(name); // StringBuilder StringBuilder sb = new StringBuilder(); sb.append(firstname).append(lastname); System.out.println(sb.toString()). // StringBuffer StringBuffer sBuffer = new StringBuffer(); sBuffer.append(firstname).append(lastname); System.out.println(sBuffer.toString()) // concat System.out.println(firstName.concat(lastName)); } } |
出力結果
山田 太郎
山田 太郎
山田 太郎
山田 太郎
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。