Java 文字列を連結するサンプル(StringBuilder/StringBuffer/join)

Javaの文字列を連結するサンプルです。

目次

StringBuilderで連結する

public  StringBuilder  append (String str)
  • StringBuilderクラスのappendメソッドです。
  • 文字列を連結します。
  • 単一のスレッドで動作することを前提にしているため速いです。
  • 文字列の連結時に新たなインスタンスは生成されません。
  • 文字列がnullの場合、nullという文字が追加されます。
  • appendメソッドの引数にint型、long型等も可能です。文字列として連結します。
  • 以下はJava8 API仕様のStringBuilderクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/lang/StringBuilder.html

コード

サンプルのコードです。
10,11行目のappendメソッドで文字列を連結しています。
13行目のtoStringメソッドは文字列を返します。

package test1;
 
public class Test1 {
	public static void main(String[] args) {
		
		String s1 = "あいう";
		String s2 = "えお";
		
		StringBuilder sb = new StringBuilder();
		sb.append(s1); 
		sb.append(s2);
		
		System.out.println(sb.toString());// あいうえお
 	}
}

StringBufferで連結する

public StringBuffer append (String str)
  • StringBufferクラスのappendメソッドです。
  • 文字列を連結します。
  • 複数のスレッドで動作することを前提にしていて排他制御がある分遅いです。
  • 文字列の連結時に新たなインスタンスは生成されません。
  • 文字列がnullの場合、nullという文字が追加されます。
  • appendメソッドの引数にint型、long型等も可能です。文字列として連結します。
  • 以下はJava8 API仕様のStringBufferクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/lang/StringBuffer.html

コード

サンプルのコードです。
10,11行目のappendメソッドで文字列を連結しています。
13行目のtoStringメソッドは文字列を返します。

package test1;
 
public class Test1 {
	public static void main(String[] args) {

		String s1 = "あいう";
		String s2 = "えお";
		
		StringBuffer sb = new StringBuffer();
		sb.append(s1); 
		sb.append(s2);
		
		System.out.println(sb.toString());// あいうえお
 	}
}

+演算子で連結する

  • 文字列同士を+演算子で連結すると新たなインスタンスが生成されます。
    そのためループの中で+演算子を使用するとパフォーマンス低下やメモリ不足が発生するおそれがあります。
  • リテラル同士の+演算子の連結はコンパイル時に行われるため速度は速いです。
    →リテラルとは、コードに記述された値のことです。
  • 変数同士の連結や変数とリテラルの連結に注意する必要があります。

コード

サンプルのコードです。
6行目は、文字列リテラル同士を連結しています。

package test1;
 
public class Test1 {
	public static void main(String[] args) {
		
		System.out.println("ab" + "c");// abc
 	}
}

joinで連結する

public static String join(CharSequence delimiter,CharSequence... elements)
  • Stringクラスのjoinメソッドです。
  • 文字列を連結します。
  • Java8で追加されました。
  • 1つ目の引数は区切り文字です。
  • 2つ目の引数は連結する文字列です。任意の数を指定できます。
  • 文字列の連結時に新たなインスタンスは生成されます。
  • 文字列がnullの場合、nullという文字が追加されます。
  • 配列とリストの値も連結できます。
  • 以下はJava8 API仕様のStringクラスのjoinメソッドのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.CharSequence...-

コード

サンプルのコードです。
9,12行目は文字列リテラルをjoinメソッドで連結しています。
17行目は配列の値を連結しています。
22行目はリストの値を連結しています。

package test1;

import java.util.Arrays;
import java.util.List;

public class Test1 {
    public static void main(String[] args) {
          
        String a = String.join("","あい","うえ","お");
        System.out.println(a);// あいうえお
        
        String b = String.join("-","あい","うえ","お");
        System.out.println(b);// あい-うえ-お
        
        // 配列
        String[] colors1 = {"赤","黄","青"};
        String c = String.join("-",colors1);
        System.out.println(c);// 赤-黄-青
        
        // リスト
        List<String> colors2 = Arrays.asList(colors1);
        String d = String.join("+",colors2);
        System.out.println(d);// 赤+黄+青
    }
}

関連の記事

Java 文字列を分割するサンプル(split)
Java 文字列が空か確認するサンプル(isEmpty)
Java 文字列の始め/終わりを確認するサンプル(startsWithとendsWith)
Java 文字列の長さを取得するサンプル(length)
Java 大文字と小文字を変換するサンプル(toLowerCaseとtoUpperCase)
Java 文字列の先頭と末尾の空白を取り除くサンプル(trim)
Java 文字列を置き換えるサンプル(replace)
Java 文字の位置を取得するサンプル(indexOfとlastIndexOf)
Java 文字列から文字列の一部を取得するサンプル(substring)
Java 文字列の値を比較するサンプル(equals)
Java 数値と文字列の変換のサンプル(valueOf)
Java equalsメソッドで比較する値がnullまたは空文字だった場合のサンプル
Java エスケープシーケンスのサンプル

 はまったらエンジニア特化型Q&Aサイト
【teratail(テラテイル)】で質問しましょう!


△上に戻る