Java
 Computer >> コンピューター >  >> プログラミング >> Java

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へ変換すれば、パフォーマンスと利便性の両方を兼ね備えたコードになります。

  1. 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

  2. JavaでStringの代わりにStringBuffer/StringBuilderを使うべき場面とは?使い分けのポイントを解説

    Javaで文字列を扱う際、String・StringBuffer・StringBuilderのどれを選ぶべきか迷ったことはありませんか?それぞれのクラスには明確な特徴があり、状況に応じた適切な使い分けがパフォーマンスとスレッドセーフ性の両面で重要になります。本記事では、3つのクラスの違いと、具体的な使い分けの基準をわかりやすく解説します。 String・StringBuffer・StringBuilderの主な違い 可変性(ミュータビリティ):Stringクラスのオブジェクトは不変(immutable)である一方、StringBufferとStringBuilderのオブジェクトは可変(mu