Java で文字列を効率的に追加する

Farkhanda Athar 2023年10月12日
  1. Java で java.lang.String クラスの concat() を使用して追加文字列
  2. Java で+ 演算子を使用した文字列の連結
  3. java.lang.String からの concat() メソッドの使用
  4. Java で文字列を連結するための StringBuffer の使用
  5. Java での文字列の連結での StringBuilder の使用
Java で文字列を効率的に追加する

Java での文字列の連結について話すとき、+ 演算子が最も効率的に文字列を追加することを思い浮かびます。Java はオーバーロードをサポートしていないため、文字列がそのような動作をするのは特別なことです。 + 演算子以外にも、Java で文字列を追加するために使用されるさまざまなメソッドがあります。

  • StringBuffer
  • StringBuilder

Java で java.lang.String クラスの concat() を使用して追加文字列

この目的のために、StringBuffer クラスと StringBuilder クラスの両方が使用されます。StringBuilder は、文字列を連結するための最速の方法であるため、重要視されています。StringBuffer は、同期されたメソッドと、それら以外の他のメソッドがこれら 2つよりも 1000 倍遅いため、2 番目に優先されます。ここでは、これら 4つの方法の例を示します。

public class Main {
  public static void main(String args[]) {
    // 1st method of concat
    String str1 = "Most";
    str1 = str1.concat(" Welcome");
    str1 = str1.concat(" to University");
    System.out.println(str1);
    // 2nd method of concat
    String str2 = "Today";
    str2 = str2.concat(" is").concat(" your first").concat(" day");
    System.out.println(str2);
  }
}

出力:

Most Welcome to University
Today is your first day

Java で+ 演算子を使用した文字列の連結

これは、Java で文字列と数値を結合する最も簡単な方法です。ユーザーが文字列連結の開始時に shortchar、または int などの 2つ以上のプリミティブ値を持っている場合、それらを明示的に文字列に変換する必要があります。たとえば、System.out.println(300, + 'B'+ "") は 300B を出力せず、B の ASCII 値を取得して 300 に加算することで 366 を出力します。System.out.println('', + 300 +'B') を使用すると、300B が出力されます。すべての+ 演算子スキャンは、String() を呼び出す前に、さまざまな StringBuilder.append() 呼び出しに連結されます。

java.lang.String からの concat() メソッドの使用

concat(String str) メソッドは、いくつかの特定の文字列を文字列の最後に連結します。2つの文字列の合計の長さに等しい長さの char[] を割り当てます。このメソッドは、String データをその文字列にコピーし、プライベート String コンストラクターから新しい String オブジェクトを作成します。このコンストラクターは、以下に示すように、入力 char[] をコピーしません。

import java.util.Scanner;
public class Main {
  public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter the first string: ");
    String str1 = sc.next();
    System.out.println("Enter the second string: ");
    String str2 = sc.next();

    String result = str1 + str2;
    System.out.println(result);
  }
}

出力:

Enter the first string: 
United
Enter the second string: 
Kingdom
UnitedKingdom

Java で文字列を連結するための StringBuffer の使用

これは、StringBuilder が使用できない場合に、Java の複数の文字列、整数、およびその他の部分を連結するための最も適切な方法です。concat() および+ 演算子メソッドよりも高速に動作します。このアプローチの唯一の欠点は、StringBuffer による追加メソッドが同期されることです。その動作方法は、StringBuilder メソッドに似ています。また、charintshort などを連結するためのさまざまなオーバーロードされた append メソッドも提供します。

public class Main {
  public static void main(String args[]) {
    StringBuffer sb = new StringBuffer("My ");
    sb.append("Country");
    System.out.println(sb);
  }
}

出力:

My Country

Java での文字列の連結での StringBuilder の使用

これは、Java で文字列を連結するための最良の方法の 1つです。最も重要なのは、ユーザーが複数の文字列を連結している場合です。この方法は、ユーザーが複数の文字列を追加する必要がある場合に簡単かつ効率的に使用できます。ただし、この方法は、ユーザーが文字列を連結する必要がある場合には一般的に使用されません。

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

出力:

My Country

関連記事 - Java String