Il génère l'équivalent de:
String s = new StringBuilder("abc")
.append(methodReturningAString())
.append("ghi")
.append(anotherMethodReturningAString())
.append("omn")
.append("blablabla")
.toString();
Il est assez intelligent pour pré-concaténer des chaînes statiques (c'est à dire l' "omn" + "blablabla"
). On pourrait appeler l'utilisation de l' StringBuilder
performances "truc" si vous le souhaitez. Il est certainement mieux pour les performances que les cinq précédents, ce qui donne quatre temporaires inutiles cordes. Aussi, l'utilisation de StringBuilder a été une amélioration des performances dans (je pense) de Java 5; avant cela, StringBuffer a été utilisé.
Edit: comme l'a souligné dans les commentaires, chaînes statiques ne sont que pré-concaténés si ils sont au début de la concaténation. Faire autrement serait briser l'ordre des opérations (même si dans ce cas je pense que le Soleil pourrait le justifier). Donc, étant donné ce:
String s = "abc" + "def" + foo() + "uvw" + "xyz";
il serait compilé comme ceci:
String s = new StringBuilder("abcdef")
.append(foo())
.append("uvw")
.append("xyz")
.toString();