文字列を連結する方法がいくつかあるのはご存知ですか?
「+」演算子はわかりやすく便利なので使いたくなります。
今回は「+」演算子ではなく
StringBuilderクラスを使用した文字列の連結について解説していきます。
StringBuilderクラスとは?
StringBuilderクラスとは文字列の操作を行うためのクラスとなっています。
+演算子との違いについて
文字列の連結を行うにあたって、
+演算子でもStringBuilderクラスを使用しても同じ答えとなります。
2つの大きな違いは処理速度です。
+演算子とStringBuilderにそれぞれ文字列の連結処理を10万回行った場合、
+演算子を使用するよりStringBuilderクラスは4000倍近い速さで処理を行います。
サンプルコード
StringBuilderクラスで、文字列の連結を行う場合に使用するメソッドが
appendメソッドです。
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
// 文字列を連結していく
sb.append("StringBuilderを使うと");
sb.append("+演算子より処理速度が速い");
// Stringに変換する場合
String str = sb.toString();
System.out.println(str);
}
}
//実行結果
StringBuilderを使うと+演算子より処理速度が速い
System.out.println()する場合、
今回はStringに変換したものを出力させましたが
StringBuilderオブジェクトをそのまま引数として使用することも可能です。
StringBuilderと+演算子の使い分け方
+演算子は
連結をするたびに新しいインスタンスがnewされている状態で
インスタンスの生成はJVMに非常に不可がかかります。
StringBuilderは
インスタンス内部に連結した文字列を蓄えるメモリ領域を保持しています。
まとめ
数個程度の結合の場合、+演算子
大量の文字列の連結処理が発生する場合(CSVファイルの操作など)は
StringBuilderクラスを利用しましょう。