0Pricing
Java Academy · レッスン

StringBuilderで文字列を構築する

効率的な連結を学びます

「StringBuilderで文字列を構築する」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。

可変な文字列ビルダー

StringBuilder は可変な文字シーケンスです。String とは異なり、内容をその場で変更できるため、テキストを効率的に構築できます。

StringBuilder の作成

空のビルダーを作成するには new StringBuilder() を使用します。開始時のテキストを指定して、内容を持った状態で始めることもできます。

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        StringBuilder named = new StringBuilder("Hello");
        System.out.println("empty length: " + sb.length());
        System.out.println("named: " + named);
    }
}

テキストを追加する

append メソッドは末尾に内容を追加します。文字列、数値、文字、真偽値などを受け取れます。

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("Count: ");
        sb.append(5);
        sb.append(' ');
        sb.append(true);
        System.out.println(sb);
    }
}

メソッドチェーン

append は同じビルダーを返すため、1つの式の中で呼び出しを流れるように連結できます。

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("a").append("b").append("c").append(123);
        System.out.println(sb);
    }
}

ループ内で構築する

これが主な使用例です。毎回新しいオブジェクトを作成せずにループ内で追加し、最後に一度だけ文字列へ変換します。

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= 10; i++) {
            sb.append(i).append(' ');
        }
        System.out.println(sb.toString().trim());
    }
}

文字列に変換する

変更が完了したら toString() を呼び出して、ビルダーから通常の不変な String を取得します。

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("result");
        String finalText = sb.toString();
        System.out.println(finalText.toUpperCase());
    }
}

区切り文字で結合する

項目の間に区切り文字を追加すれば、カンマ区切りのリストを構築できます。最後の項目は注意して処理してください。

public class Main {
    public static void main(String[] args) {
        String[] names = {"Ann", "Ben", "Cara"};
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < names.length; i++) {
            sb.append(names[i]);
            if (i < names.length - 1) {
                sb.append(", ");
            }
        }
        System.out.println(sb);
    }
}

長さを読み取る

length() は、ビルダーが現在保持している文字数を返します。文字を追加すると更新されます。

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("12345");
        System.out.println("Length: " + sb.length());
    }
}

文字にアクセスする

charAt(index) を使用すると、String の場合と同じように、位置を指定して1文字を読み取れます。

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Coddy");
        System.out.println("First: " + sb.charAt(0));
        System.out.println("Last: " + sb.charAt(sb.length() - 1));
    }
}

容量と長さの違い

ビルダーは内部バッファー(容量)を保持し、必要に応じて自動的に拡張します。最終的なサイズがわかっている場合は、初期容量を指定するとサイズ変更を減らせます。

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder(100);
        sb.append("short");
        System.out.println("Length: " + sb.length());
        System.out.println("Capacity at least: " + (sb.capacity() >= 100));
    }
}

実用的なビルダー

ここまでの内容を組み合わせ、メソッドチェーンとループを使って小さなレポート文字列を効率的に構築します。

public class Main {
    public static void main(String[] args) {
        int[] sales = {100, 250, 75};
        StringBuilder report = new StringBuilder("Sales Report\n");
        int total = 0;
        for (int i = 0; i < sales.length; i++) {
            report.append("Day ").append(i + 1).append(": ").append(sales[i]).append('\n');
            total += sales[i];
        }
        report.append("Total: ").append(total);
        System.out.println(report);
    }
}

確認問題

ループ内で + による連結を繰り返すより、StringBuilder のほうが効率的なのはなぜでしょうか。

まとめ

StringBuilder を使った文字列の構築方法を学びました。

  • 可変な文字シーケンスです
  • append は内容を追加し、メソッドチェーンをサポートします
  • ループ内でのテキスト構築に最適です
  • toString() を呼び出すと、最終的な String を取得できます
  • 初期容量を指定するとサイズ変更を避けられます

よくある質問

「StringBuilderで文字列を構築する」レッスンは無料ですか?

はい。「StringBuilderで文字列を構築する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。

「StringBuilderで文字列を構築する」で何を学びますか?

効率的な連結を学びます ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「StringBuilderで文字列を構築する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 文字列が不変である理由
  2. StringBuilderで文字列を構築する
  3. StringBuilderのメソッド
  4. StringBuilderとStringBuffer
← Java Academyに戻る