「StringBuilder について説明するだけで、これで完了だと思います。」

「すでにご存知のとおり、StringBuilder は変更可能である点を除けば String クラスに似ています。」

「また、単純に文字列を追加するときに、コンパイラが StringBuilder を使用するコードを生成することも覚えています。」

「はい、その通りです。あなたは素晴らしい記憶力をお持ちですね。繰り返しになりますが、どのロボットもそうです。私はそれをいつも忘れてしまいます。」

「 StringBuilderクラスを使用して何ができるかを調べてみましょう。」

1) 通常の文字列があるので、それを可変にしたいと考えています。それ、どうやったら出来るの?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);

2) 既存の可変文字列に文字を追加したいのですが?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);
s2.append("!");

3) StringBuilder を String に変換するにはどうすればよいですか?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);
s2.append("!");
s = s2.toString();

4) キャラクターを削除する必要がある場合は?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);
s2.deleteCharAt(2); //Becomes "Beder"

5) 文字列の一部を別の文字列に置き換えるにはどうすればよいですか?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);
s2.replace (3, 5, "_DE_"); //Becomes "Ben_DE_r"

6) 文字列を反転する必要がある場合はどうすればよいですか?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);
s2.reverse(); //Becomes "redneB";

「わかりました。ありがとう、エリー、すべてが理にかなっています。」

"気に入ってもらってうれしいです。"

「ビラーボがあなたに伝えるべきだったことについても思い出させていただきたいと思います。」

「 StringBufferと呼ばれる別のクラスがあります。これはStringBuilderに似ていますが、そのメソッドはsynchronizedとして宣言されています。これは、そのメソッドのいずれかを呼び出す前に、Java マシンがオブジェクトがビジーかどうかをチェックし、ビジーでない場合は、JVM がそのオブジェクトをマークすることを意味します。 「ビジーとして表示されます。メソッドを終了すると、オブジェクトは解放されます。その結果、これらの呼び出しは遅くなります。必要な場合を除き、StringBufferを使用しないでください。」

「しかし、複数のスレッド間で使用される変更可能なStringが必要な場合は、 StringBufferより優れたものは見つかりません。」

「情報ありがとうございます。いつか役立つかもしれません。」