【5分で分かる】Java言語のStringBufferの使い方とStringBuilderとの違い

Javaを使う上で、文字列を扱うStringクラスはご存知の方も多いと思いますが、StringBufferクラスは、使ったことがない方も多いのではないでしょうか?

StringBufferもStringと同じく文字列を扱うクラスですが、使い方によって用途が異なります。

StringBufferクラスはStringクラスとどう違うの?
どのような時に使えばよいの?
他の文字列を扱うクラスとどう住み分けすればよいのか?

この記事を読めば、これらの疑問が解決できるでしょう。

StringBufferとは

StringBufferクラスは、Stringクラス同様に宣言した変数に文字列を格納するために使用します。

Stringクラスとの違いとして、変数に文字列を格納したあとでも「値を追加」「挿入」「変更」などの、文字列操作が可能なことが挙げられます。

つまり、StringBufferクラスは、文字列の値が「不変である」と分かっているときに、使用するケースが多いと言えます。

StringBufferの使い方

StringBufferは以下のように宣言を記述します。

StringBuffer [変数名] = new StringBuffer("文字列");

実際にStringBufferの簡単な使い方を、以下に紹介します。

public class Main {
    public static void main(String[] args) throws Exception {
        
        // StringBufferを宣言する
        StringBuffer sStrBuf1 =new StringBuffer("apple");
        StringBuffer sStrBuf2 =new StringBuffer("orange");
        
        System.out.println(sStrBuf1);
        System.out.println(sStrBuf2);
        
        // appendメソッドを使用して、文字列を結合する
        sStrBuf1.append(sStrBuf2);
        System.out.println(sStrBuf1);

        // insertメソッドを使用して、文字列” and ”を挿入する
        sStrBuf1.insert(5, " and ");
        System.out.println(sStrBuf1);
    }
}

実行結果

apple
orange
appleorange
apple and orange

紹介した例では、StringBuffer型変数sStrBuf1とsStrBuf2を宣言して、文字列を格納しています。
(ここまではString型と同じ)

続いて、変数sStrBuf1にappendメソッドを使って、sStrBuf2を結合しています。出力結果は、sStrBuf1の文字列にsStrBuf2を結合した結果である”appleorange”が表示されます。

また、insertメソッドを使用すれば、文字列に値を挿入することが可能です。使い方は以下。

[StringBuffer型変数名].insert([指定した位置番号],(“挿入文字列”));

出力結果は、sStrBuf1の文字列のインデックス番号5番目から文字列” and ”を挿入しているため、結果は、”apple and orange”が表示されます。

StringBuilderとの違いは?

StringBufferクラスとStringBuilderクラスは、文字列の追加・変更などが行えますが、その違いはなんでしょうか?

違いを一言でいうと、StringBufferはマルチスレッドで、同じStringBufferのインスタンスにアクセスできます

マルチスレッドとは、複数の処理を並行して進めることを言います。そのため、ユーザーが1つの処理の完了を待たずに次の処理が実行できたり、メモリなどのリソースを節約できるといった利点があります。

StringBuilderは、マルチスレッドに不向き(実行結果が保証されていない)なことが挙げられます。StringBuilderについては次の記事で詳しく解説しています!

まとめ

StringBufferクラスは、Stringクラスと違ってさまざまな文字列操作ができることがわかりました。

  • 可変長(データの長さを問わない)であるため、値を繰り返しセットできる
  • 値を追加・挿入・変更することができる
  • マルチスレッド(並行処理)に対応している

もし、StringBufferの使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

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



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

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

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

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

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

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。

おすすめコンテンツ

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

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