Java プログラミング

【サンプルコード付き】+演算子ではなくStringBufferを利用して文字列連結を行う方法

+演算子ではなくStringBufferを利用して文字列連結を行う方法の画像

Javaの文字列連結について

Javaでの文字列連結について+演算子を利用して行って上司やレビュアーに指摘された経験はないですか?

私は、最初の開発現場で文字列連結について指摘を受けてから+演算子ではなくStringBufferを利用しています!

Javaで文字列を連結する方法にはいくつかの選択肢があります。

初心者の多くは、+演算子を使って簡単に文字列を結合しますが、

大量の文字列操作を行う場合、この方法は効率的ではありません。

この記事では、StringBufferを使用して文字列を連結する方法を詳しく説明します。

+演算子を利用した文字列連結

+演算子を使った文字列連結はシンプルですが、

実行時に多くの中間オブジェクトを生成するため、パフォーマンスが低下します。

以下はその例です。

String str1 = "Hello";
String str2 = "World";
String result = str1 + " " + str2;

このコードは、3つの文字列オブジェクトを作成します。

大量の文字列連結を行う場合、メモリ使用量が増加し、パフォーマンスが悪化します。

StringBufferを利用した文字列連結

StringBufferを使用すると、効率的なメモリ管理が可能になり、パフォーマンスが向上します。

StringBufferは、内部的に可変長のバッファを持ち、追加や変更を行うたびに新しいオブジェクトを作成しません。

以下は、StringBufferを使って文字列を連結する方法の例です。

public class StringBufferExample {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("Hello");
        sb.append(" ");
        sb.append("World");
        
        String result = sb.toString();
     // 出力結果は、 Hello Worldとなります。
        System.out.println(result);
    }
}

このコードでは、StringBufferオブジェクトを作成し、appendメソッドを使用して文字列を連結しています。

最後に、toStringメソッドを使用して連結された文字列を取得します。

StringBuffer vs StringBuilder

Javaにはもう一つ、StringBuilderというクラスがあります。

StringBuilderはStringBufferと同様に文字列の連結を行いますが、スレッドセーフではありません。

単一スレッドの環境では、StringBuilderの方がわずかにパフォーマンスが高いため、

適切なシチュエーションで使い分けることが重要です。

まとめ

文字列の連結を効率的に行うためには、StringBufferやStringBuilderを使用することが推奨されます。

特に、大量の文字列操作が必要な場合、これらのクラスを使用することで、メモリ使用量を抑え、

パフォーマンスを向上させることができます。

私の個人的に使い分けですが、文字列2つの結合は、+演算子を利用し、

文字列が3つ以上の場合は、StringBufferを利用します。

StringBufferについて公式Oracleからのサイトを確認したい方は、こちらからご確認ください。

-Java, プログラミング