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

\業界最安級/
月額2,980円のプログラミングスクール

✔ 業界最安値の月定額2,980円
✔ 「Q&A掲示板」で平均30分以内に回答がもらえる
✔ 月に一度の「オンライン相談」で悩みを解決
✔ 教材の数は30種類以上
✔ 入会金不要+いつでも退会OK

公式サイトはこちら

Writer

侍エンジニア編集部

株式会社SAMURAI

侍エンジニアは「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close