スライドショー

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

JavaのStringを扱う上で、文字列同士を結合するといった対応が必要なことがあります。

「文字列を結合する方法が知りたい」
「appendを使用した文字列を結合する方法も知りたい」
「concatとappendの処理パフォーマンスが知りたい」

今回は、そんな悩みを解決するために、文字列を結合する方法をわかりやすく解説します!

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

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説