JavaでStringBuilderをStringに変換する方法
Javaでは、可変(ミュータブル)な文字列を扱うためにStringBuilderクラスがよく使われます。しかし、最終的な結果として不変(イミュータブル)なStringオブジェクトが必要になる場面も多くあります。
そのような場合に活躍するのが、StringBuilderクラスが提供するtoString()メソッドです。このメソッドは、現在のStringBuilderオブジェクトが保持している文字列の内容を、新しいStringオブジェクトとして返します。つまり、StringBuilderをStringに変換したいときは、単純にtoString()メソッドを呼び出すだけで完了します。
変換の手順
StringBuilderクラスをインスタンス化します。
append()メソッドを使って、必要なデータを追加・連結していきます。
toString()メソッドを呼び出し、StringBuilderをStringに変換します。
サンプルコード
次のJavaプログラムでは、複数の文字列要素を持つ配列をStringBuilderに連結し、toString()メソッドを使って1つのStringに変換しています。
public class StringToStringBuilder {
public static void main(String args[]) {
String strs[] = {"Arshad", "Althamas", "Johar", "Javed", "Raju", "Krishna" };
StringBuilder sb = new StringBuilder();
sb.append(strs[0]);
sb.append(" "+strs[1]);
sb.append(" "+strs[2]);
sb.append(" "+strs[3]);
sb.append(" "+strs[4]);
sb.append(" "+strs[5]);
String singleString = sb.toString();
System.out.println(singleString);
}
}実行結果
Arshad Althamas Johar Javed Raju Krishna
ポイント
ループ内で文字列を「+」演算子で繰り返し連結すると、そのたびに新しいStringオブジェクトが生成され、パフォーマンスが低下する原因になります。一方、StringBuilderは内部のバッファを直接書き換えるため、大量の文字列連結処理において効率的です。連結が完了した後にtoString()でStringへ変換すれば、パフォーマンスと利便性の両方を兼ね備えたコードになります。
-
JavaのStringIndexOutOfBoundsExceptionとは?発生原因と対処法をわかりやすく解説
StringIndexOutOfBoundsExceptionとはJavaにおいて、文字列(String)は一連の文字を格納するために使用され、オブジェクトとして扱われます。文字列は、java.langパッケージに含まれるStringクラスによって表現されます。文字列の作成方法は主に2つあります。1つは他のオブジェクトと同様にnewキーワードを使用する方法、もう1つはプリミティブ型のようにリテラルを直接代入する方法です。String stringObject = new String(Hello how are you); String stringLiteral = Welcome to T
-
JavaでStringの代わりにStringBuffer/StringBuilderを使うべき場面とは?使い分けのポイントを解説
Javaで文字列を扱う際、String・StringBuffer・StringBuilderのどれを選ぶべきか迷ったことはありませんか?それぞれのクラスには明確な特徴があり、状況に応じた適切な使い分けがパフォーマンスとスレッドセーフ性の両面で重要になります。本記事では、3つのクラスの違いと、具体的な使い分けの基準をわかりやすく解説します。 String・StringBuffer・StringBuilderの主な違い 可変性(ミュータビリティ):Stringクラスのオブジェクトは不変(immutable)である一方、StringBufferとStringBuilderのオブジェクトは可変(mu