常に + より StringBuffer を使うべきなんじゃなくて,
一つの式で書けるなら + の方が効率がいいですね。
(って最適化をコンパイラーがおこなうことは言語仕様では
義務づけられてないけど少なくとも JDK はおこなってくれる)

例えば >>32 の最後のサンプルなら
int m = 10;
String str = "test" + m + '#' + " OK";
って書いた方が効率がいい。

あと JDK は String(とプリミティブ型)のリテラルの + は
コンパイル時に評価するので,
String str = "hogepiyo\nfoobar\n1234567890\n";
は行頭をそろえて見やすく書いたりしても同じバイトコードが
生成されます:
String str =
"hogepiyo\n" +
"foobar\n" +
"1234567890\n";