String concat vs. StringBuffer

Heute ein kleiner Test. Was gibt folgender Code aus?

String text = "Ich habe ";
text.concat("Hunger!");
System.out.println(text);


Natürlich: Ich habe

Das war wohl nicht erwartet, oder?

String text = "Ich habe ";
text = text.concat("Hunger!");
System.out.println(text); // Ich habe Hunger!

Mit dem Nachteil das der alte String „Ich habe “ verloren ist im String pool und Speicher verschwendet!

Also besser:

StringBuffer sb = new StringBuffer("Ich habe ");
sb.append("Durst!");
System.out.println(sb);