JavaのStringを扱う上で、文字列同士を結合するといった対応が必要なことがあります。
「文字列を結合する方法が知りたい」
「appendを使用した文字列を結合する方法も知りたい」
「concatとappendの処理パフォーマンスが知りたい」
今回は、そんな悩みを解決するために、文字列を結合する方法をわかりやすく解説します!
なお、Javaの記事については、こちらにまとめています。
concatとは?
concatメソッドは、引数で指定した文字列を「結合対象の文字列の最後に結合」するためのメソッドです。
String.concat(String str)
concatの使用方法
concatメソッドを使用すれば、文字列同士を簡単に結合することができます。
以下にconcatメソッドで文字列を結合する方法を記述します。
public class Main { public static void main(String[] args) throws Exception { //String型を宣言 String str1 = "apple"; String str2 = "orange"; //concatで文字列を結合する String sconcat = str1.concat(str2); System.out.println("sconcat : " + sconcat); } }
実行結果
sconcat : appleorange
サンプルでは、String型を2つ宣言して文字列を設定しています。
次に結合した結果を格納するためのString型変数を宣言し、変数str1のオブジェクトに対してconcatメソッドを使用して、引数に結合対象の文字列を指定しています。
実行結果の通り、変数sconcatにはstr1とstr2が結合された値が返却されます。
appendを使用した文字列の結合
StringBuilderクラスのappendメソッドを使用することでも、文字列を結合することが可能です。
以下にappendメソッドを使用した文字列を結合する方法を記述します。
public class Main { public static void main(String[] args) throws Exception { //StringBuilderを宣言 StringBuilder sb = new StringBuilder("apple"); System.out.println("sb : " + sb.append("orange")); } }
実行結果
sb : appleorange
サンプルではStringBuilderクラスの変数を宣言し、文字列を設定しています。
次にStringBuilderクラスの変数sbに対してappendメソッドを使用し、引数に文字列を指定しています。
出力結果を確認すると、文字列が結合されていることがわかります。
なお、StringBuilderクラスについては、以下の記事で詳しく解説しています!
速度面での比較
concatメソッドとappendメソッドは、文字列を結合するために使用しますが、処理パフォーマンスはどうなのでしょうか?
文字列を結合する処理をループで100回実行し、どちらの実行結果が早いのか?ナノ秒単位で比較してみました。
public class Main { public static void main(String[] args) throws Exception { /* concatとappendの処理バフォーマンス比較 */ //1. concat long start1 = System.nanoTime(); String strcon = ""; for(int val=0; val<100; val++) { strcon = strcon.concat("strcon : " + Integer.toString(val) + "n"); } //concat終了時間 long end1 = System.nanoTime(); System.out.println("concat:" + (end1 - start1) / 1000000f + "ms"); //2. append long start2 = System.nanoTime(); StringBuilder sb = new StringBuilder(); for(int val=0; val<100; val++) { sb.append("sb : " + Integer.toString(val) + "n"); } // append終了時間 long end2 = System.nanoTime(); System.out.println("append:" + (end2 - start2) / 1000000f + "ms"); } }
実行結果
concat:0.655358ms append:0.257644ms
実行結果のとおりStringクラスのconcatメソッドより、StringBuilderクラスのappendメソッドのほうが、文字列を結合する処理が早いことがわかりました。
concatメソッドは、メソッドを実行するたびにStringのオブジェクトをnewで新しく生成しているため、その分appendメソッドより処理が遅くなってしまいます。
そのため、大量の文字列を連結する場合は、処理パフォーマンスを考えるとappendメソッドを使用することをオススメします。
Stringについてもっと詳しく知りたい方へ
Stringのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!
まとめ
ここでは、文字列を結合するconcatメソッドの基本的な使い方やappendメソッドの使い方、concatとappendの処理パフォーマンス比較検証などを行いました。
文字列結合などの文字列操作処理は、データベース格納時やファイル出力時など、さまざまな場面で使用することがあると思います。
もし、Stringの結合方法を忘れてしまったら、この記事を思い出してくださいね!