Java 文字列の連結にて+演算子は使わないほうがいいのか?

文字列結合

・文字列を+演算子を使って結合した時
・文字列をStringBuilderクラスを使って結合した時

文字列を+演算子を使って結合した時
String a = "aa";
String b = "bb";
String s = a + b;

Stringクラスは不変クラス*1であるため、"aa"という情報を持ったインスタンスが大きくなって、"aabb"になるわけではない。+演算子が使われた瞬間に、"aa"のインスタンスは破棄され、新たに"aabb"のインスタンスが生成される。

文字列をStringBuilderクラスを使って結合した時
StringBuilder sb = new StringBuilder();
String a = "aa";
String b = "bb";
sb.append(a);
sb.append(b);
String s  = sb.ToString();

StringBuilderクラスは可変クラスで構成されているため、文字列結合する度に新たなインスタンスが生成されるわけではなく、バッファの領域を増やして新たな文字列を追記していく。

  1. 演算子では、文字列結合が行われる度にインスタンスを捨てたり、生成したりしているので遅いが、見た目が直感的でわかりやすい。

何回も文字列結合を行うのであれば、StringBuilderクラスを使った方が良いが、数回の文字列結合であれば、わかりやすい+演算子を使ったほうがいいのかもしれない。

*1:インスタンス化の後に内容が絶対に変化しないように設計されたクラスのこと。