Duplicata possible:
StringBuilder vs concaténation de chaînes dans toString () en Java
Je me demande, puisque le compilateur utilise en interne un StringBuilder pour ajouter des chaînes lors de l'exécution de la concaténation de chaînes, alors quel est le point et pourquoi devrais-je prendre la peine d'utiliser StringBuilder si la concaténation de chaînes a déjà fait le travail pour vous? Y a-t-il d'autres raisons spécifiques?
Comme vous le mentionnez, vous ne devez pas utiliser StringBuilder
au lieu d'une simple expression de concaténation de chaînes telle que a + " = " + b
. Ce dernier est plus rapide à taper, plus facile à lire et le compilateur utilisera de toute façon un StringBuilder
en interne, donc il n'y a aucun avantage en termes de performances en le réécrivant.
Cependant, StringBuilder
est utile si vous concaténez un grand nombre de chaînes dans une boucle. Le code suivant est inefficace. Il nécessite O (n2) le temps de s'exécuter et crée de nombreuses chaînes temporaires.
String result = "";
for (int i = 0; i < foo.length; ++i)
{
result += bar(foo[i]); // Bad
}
Essayez plutôt ceci:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < foo.length; ++i)
{
sb.append(bar(foo[i]));
}
String result = sb.toString();
Le compilateur optimise uniquement les simples a + b + c
expressions. Il ne peut pas optimiser automatiquement le code ci-dessus.
Où supposez-vous cette concaténation de chaînes en utilisant stringbuilder en interne? Peut-être qu'un simple concat est optimisé, mais ce ne sera certainement pas:
String s = "";
for (int i = 0; i < 1000; i++){
for (int j = 0; j < 1000; j++){
s+= "" + i + j
}
}