Javaの文字列を連結させるメソッド
についてまとめました。
【要約】
concatもappendも両方文字列を連結するメソッドです。
抑えるべきポイントは以下です
- concatは新しくオブジェクトを生成する
- appendはオブジェクトを生成しない
concatメソッドとは
要約すると「文字列を結合しオブジェクトを新たに生成する」メソッドです。
他にも文字列結合のメソッドはありますが、オブジェクトを新たに生成するのはconcatメソッドのみ。
【説明】
concatメソッドは元になる文字列自体を変更させるものではなく、「結合した新しいインスタンスを生む」という点がポイント。
concatメソッドを使うには、元になる文字列を用意し、結合したい文字列を引数に渡して結合します。書き方は以下です。
//concatの記述方法
元になる文字列.concat(結合したい文字列);
// 結合した文字列を変数として扱う
String 結合した文字列 = 元になる文字列.concat(結合したい文字列);
appendメソッドとは
要約すると「文字列を結合する」メソッドです。
上記のconcatとのおおまかな違いは、オブジェクトを生成するか否かです。
【説明】
appendメソッドでは、「文字列バッファ」という変数をつかうのでオブジェクトを生成しません。
一般的にオブジェクトの生成は時間がかかるのため、appendメソッドを使う方が処理にかかる時間が短いということ。
文字を連結する際に「新しくオブジェクトを作る必要があるか」を問いてなるべくappendを採用できるようにするのがいいかも知れない。
appendメソッド種類
appendメソッドには以下のクラスを使う二通りのやり方があります。
- StringBuilderクラス
- StringBufferクラス
書き方は以下です。
StringBuilderクラス
書き方1
StringBuilder 変数名 = new StringBuilder(結合したい文字列);
変数名.append(結合したい文字列);
String 結合した文字列 = 変数名.toString()
サンプルコード1
public class Main {
public static void main(String[] args) {
// StringBuilderクラスのappendメソッドを使う場合
StringBuilder sb = new StringBuilder("Hello");
sb.append(" StringBuilder");
String str = sb.toString();
System.out.println(str);
}
}
Hello StringBuilder
StringBufferクラス
書き方1
StringBuffer 変数名 = new StringBuilder(結合したい文字列);
変数名.append(結合したい文字列);
String 結合した文字列 = 変数名.toString()
サンプルコード1
public class Main {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("Hello");
sb.append(" StringBuffer");
String str = sb.toString();
System.out.println(str);
}
}
Hello StringBuffer
【まとめ】
JavaSilverの試験での範囲内ですので、以下の点は抑えておく。
- concatはインスタンスを生成するメソッド
- appendはインスタンスを生成しないメソッド
言い方を変えればappendは「もともとインスタンスが用意されている状態で使うメソッド」とも言えるかも知れません。