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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 文字列が不変である理由
- StringBuilderで文字列を構築する
- StringBuilderのメソッド
- StringBuilderとStringBuffer