【Java入門】Stringの結合方法(concat)

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の結合方法を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次