カテゴリ: Java 更新日: 2026/05/15

JavaのStringBuilderクラスを完全ガイド!初心者でもわかる文字列操作の基本

StringBuilderクラス
StringBuilderクラス

先生と生徒の会話形式で理解しよう

生徒

「Javaで文字列を効率的に操作する方法って何かありますか?」

先生

「良い質問ですね!文字列を効率的に操作したい場合はStringBuilderクラスを使うのがおすすめです。」

生徒

Stringクラスと何が違うんですか?」

先生

Stringクラスは不変(Immutable)ですが、StringBuilderクラスは可変(Mutable)です。そのため、文字列操作が高速になるんですよ。詳しく見ていきましょう!」

1. StringBuilderクラスとは?Stringとの違いを徹底解説

「1. StringBuilderクラスとは?Stringとの違いを徹底解説」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. StringBuilderクラスとは?Stringとの違いを徹底解説
1. StringBuilderクラスとは?Stringとの違いを徹底解説

Javaでプログラミングをしていると、必ず「文字列」を扱う場面が出てきます。多くの初心者は、文字列を作る際にStringクラスを使いますが、実はStringには「一度作った中身は絶対に変えられない(不変性)」という特徴があります。

例えば、Stringで文字列を何度もつなげようとすると、そのたびにJavaは新しいメモリ空間を確保し、新しい文字列オブジェクトを作り直してしまいます。これは、100回、1000回と処理を繰り返すと、コンピュータの動作を重くする原因(パフォーマンス低下)になります。

そこで登場するのがStringBuilderクラスです。StringBuilder「可変(Mutable)」なクラスで、同じ箱の中身を直接書き換えるイメージで動作します。新しいオブジェクトをいちいち作らないため、メモリに優しく、圧倒的に高速な処理が可能です。

ここがポイント: 「使い捨ての文字列をたくさん作るのがString」、「一つの文字列をどんどん加工していくのがStringBuilder」と覚えましょう。

どれくらい違う?イメージで理解するサンプル

プログラミング未経験の方でもわかりやすいように、1から10までの数字をつなげて一つの文章にする処理を考えてみましょう。


public class WhyStringBuilder {
    public static void main(String[] args) {
        // StringBuilderを準備する(中身は空っぽの状態)
        StringBuilder message = new StringBuilder();

        // 1から10まで順番に数字をくっつけていく
        for (int i = 1; i <= 10; i++) {
            message.append(i).append("番目 "); 
        }

        // 最後にまとめて表示!
        System.out.println(message.toString());
    }
}

実行結果:


1番目 2番目 3番目 4番目 5番目 6番目 7番目 8番目 9番目 10番目 

このように、一つのStringBuilderオブジェクト(message)に対して、appendという命令を使ってどんどん後ろに付け足していくことができます。この方法は、特にループ処理(繰り返し作業)の中で文字列を組み立てる際に最強の威力を発揮します。

以下の場面では、迷わずStringBuilderを選びましょう:

  • SNSの投稿一覧: たくさんの投稿文を一つのページ用に連結するとき。
  • ログ出力: システムの動作記録を一行ずつ追加していくとき。
  • 検索結果の組み立て: 複雑な条件を組み合わせて検索文を作るとき。

2. StringBuilderの基本的な使い方とメソッド解説

2. StringBuilderの基本的な使い方とメソッド解説
2. StringBuilderの基本的な使い方とメソッド解説

Javaで文字列を効率よく操作するための「StringBuilder」クラス。プログラミング初心者の方でもすぐに使える、最も基本的な書き方と主要なメソッドを分かりやすく解説します。

文字列を結合する(appendメソッド)

StringBuilderの最大の特徴は、元のデータを壊さずに後ろへ文字をどんどん付け足していけることです。まずは、最もよく使われる「append」メソッドのサンプルコードを見てみましょう。


public class StringBuilderExample {
    public static void main(String[] args) {
        // 1. StringBuilderのインスタンスを作成(初期値を設定)
        StringBuilder sb = new StringBuilder("こんにちは");

        // 2. appendメソッドで文字列を後ろに追加
        sb.append("、世界!");
        sb.append("Javaの学習を楽しもう。");

        // 3. 最後にtoString()でString型に変換して出力
        System.out.println(sb.toString());
    }
}

実行結果:


こんにちは、世界!Javaの学習を楽しもう。
ここがポイント!
通常のString型で「+」記号を使って文字列を連結すると、裏側で新しいインスタンスが何度も作られ、動作が重くなる原因になります。しかし、StringBuilderを使えば、一つの領域(バッファ)内で直接文字を書き換えるため、メモリ消費を抑えて高速に処理できるのがメリットです。

上記の例では、appendメソッドを使って、複数の文字列をスムーズに結合しました。初心者の方は「まずはappendを覚える」だけで、文字列操作の効率が劇的に上がりますよ。

3. StringBuilderでよく使う!append以外の便利なメソッド

3. StringBuilderでよく使う!append以外の便利なメソッド
3. StringBuilderでよく使う!append以外の便利なメソッド

JavaのStringBuilderには、文字を末尾に追加するappend以外にも、編集作業を劇的に楽にするメソッドが備わっています。これらをマスターすると、複雑な文章の組み立てやデータの加工が驚くほど簡単になります。ここでは、特によく使われる4つの操作を初心者の方にも分かりやすく解説します。

  • insert(挿入):指定した場所に、ピンポイントで文字を割り込ませます。
  • delete(削除):不要な部分を範囲指定して、スッキリ消し去ります。
  • replace(置換):一部の文字を、別の新しい言葉に書き換えます。
  • reverse(反転):文字の並びを右から左へ、一瞬でひっくり返します。

プログラミング未経験の方でもイメージしやすいよう、「Hello」という言葉を加工して「!avaJ ,olleH」という実行結果になるまでの流れをコードで見てみましょう。


public class AdvancedStringBuilderExample {
    public static void main(String[] args) {
        // 1. 最初に「Hello」という土台を作ります
        StringBuilder sb = new StringBuilder("Hello");

        // 2. 5番目の位置(Helloの直後)に「, World!」を挿入
        sb.insert(5, ", World!"); 
        // 状態:Hello, World!

        // 3. 7番目から12番目未満(World)を「Java」に置き換え
        sb.replace(7, 12, "Java"); 
        // 状態:Hello, Java!

        // 4. 全体の並びを逆順にする
        sb.reverse(); 
        // 状態:!avaJ ,olleH

        // 最後に画面に表示します
        System.out.println(sb.toString());
    }
}

実行結果:


!avaJ ,olleH

このように、StringBuilderを使えば元の文字列を自由自在に作り変えることができます。 特に「文章の途中に特定のデータを差し込みたい」ときはinsert、「間違った入力を修正したい」ときはreplaceが非常に役立ちます。 まずはこのサンプルをコピーして、数字を変えてみることから始めてみましょう。

4. StringBuilderを使う際の注意点

「4. StringBuilderを使う際の注意点」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. StringBuilderを使う際の注意点
4. StringBuilderを使う際の注意点

便利なStringBuilderですが、使う際にはいくつか注意が必要です。

  • マルチスレッド環境では、StringBuilderはスレッドセーフではありません。この場合、StringBufferを使用する方が安全です。
  • 極端に大きな文字列を操作する場合は、メモリ使用量に注意してください。

5. まとめ

5. まとめ
5. まとめ

今回の記事では、JavaのStringBuilderクラスについて詳しく解説しました。このクラスを使うことで、文字列操作を効率的に行えるようになります。特に大量の文字列を連結する場合や、文字列を頻繁に変更するようなシナリオで大きな効果を発揮します。

StringBuilderの基本的なメソッド(appendinsertreplaceなど)を活用することで、柔軟な文字列操作が可能になります。また、Stringクラスとの違いとして、「可変性」がポイントであることも理解していただけたと思います。

以下に、これまで学んだことを総括するサンプルプログラムを示します。


public class SummaryStringBuilderExample {
    public static void main(String[] args) {
        // StringBuilderの使用例
        StringBuilder sb = new StringBuilder("Java Programming");
        
        // 文字列を追加
        sb.append(" is fun!");
        
        // 指定位置に文字列を挿入
        sb.insert(5, " Language");
        
        // 一部を置換
        sb.replace(0, 4, "Learning");
        
        // 文字列を逆順に
        sb.reverse();
        
        // 結果を表示
        System.out.println(sb.toString());
    }
}

実行結果:


!nuf si egaugnaL gninraeL

このように、StringBuilderを活用することで、文字列操作を効率的かつ直感的に行えるようになります。

先生と生徒の振り返り会話

生徒

「今日はStringBuilderについて色々と学べてよかったです!」

先生

「そうですね。StringBuilderを活用すると、文字列操作の効率が大幅に向上します。特にappendreplacereverseのようなメソッドはよく使うので、ぜひ覚えておきましょう。」

生徒

「マルチスレッド環境ではStringBufferを使うのがいいという点も気をつけたいですね!」

先生

「その通りです。状況に応じてStringBuilderStringBufferを使い分けることが重要です。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JavaのStringBuilderクラスとは、具体的にどのような役割を持つクラスなのですか?初心者にもわかりやすく教えてください。

JavaのStringBuilderクラスは、文字列の結合や変更を効率的に行うための専門的なツールです。プログラミングの初心者の方がよく使うStringクラスは、一度作成すると中身を変えられない「不変(Immutable)」という性質を持っていますが、StringBuilderは中身を自由に変更できる「可変(Mutable)」な性質を持っています。そのため、大量の文字列を繋げたり、中身を頻繁に書き換えたりするようなプログラムを書く際に、メモリの消費を抑えて動作を高速化させるという重要な役割を担っています。
カテゴリの一覧へ
新着記事
New1
Java
JavaのThreadクラスholdsLockメソッド完全ガイド!初心者でもわかる同期とロックの確認方法
新規投稿
New2
Spring
SpringDataJPAのJPAクエリメソッド「NotIn」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Spring
SpringDataJPAのJPAクエリメソッド「In」の使い方を完全ガイド!初心者向け解説
更新記事
New4
Spring
SpringDataJPAのJPAクエリメソッド「Not」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとVS Codeで開発を始めよう!拡張機能・launch.json・ホットリロードを丁寧に解説
No.2
Java&Spring記事人気No2
Spring
SpringのModelクラスとaddAttributeメソッドの使い方を完全ガイド!初心者でも安心
No.3
Java&Spring記事人気No3
Spring
Spring Data JPAのfindAllメソッドの使い方を完全ガイド!検索結果をThymeleafのth:eachで表示
No.4
Java&Spring記事人気No4
Java
JavaのExceptionクラスを完全解説!初心者でも理解できる例外処理の基本
No.5
Java&Spring記事人気No5
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.6
Java&Spring記事人気No6
Spring
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.7
Java&Spring記事人気No7
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド