StringBuilder vs StringBuffer vs String.concat

Je viens de lire un article très intéressant comparant 3 méthodes pour construire des chaines de texte en Java.

Personnellement, je retiendrai que:

1. concat est très lent devant les trois autres (22 secondes pour 65536 concaténation avec String.concat contre <0,24 secondes pour les deux autres).

2. le compilateur transforme les expression comme
[java toolbar=”false”]System.out.println(“x:”+x+” y:”+y);[/java]
en
[java toolbar=”false”]System.out.println((new StringBuilder()).append(“x:”).append(x).append(” y:”).append(y).toString());[/java]
En conséquence, on n’utilisera pas l’opérateur + dans une boucle, car cela cause la création d’autant de StringBuilder que d’itération de la boucle.

3. le compilateur concatène automatiquement et à la compilation les expressions du genre
[java toolbar=”false”]String text=
“line 1n”+
“line 2n”+
“line 3”;[/java]
4. Enfin, on se souviendra que StringBuilder n’est pas synchronisé alors que StringBuffer l’est.

Leave a Reply

Your email address will not be published. Required fields are marked *