StringBuilder vs StringBuffer vs String.concat
Published: Sep 12, 2011 · Tags: Java
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:
-
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). - le compilateur transforme les expression comme
System.out.println("x:"+x+" y:"+y);
en
System.out.println((new StringBuilder()).append("x:").append(x).append(" y:").append(y).toString());
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.
- le compilateur concatène automatiquement, à la compilation les expressions du genre
String text= "line 1n"+ "line 2n"+ "line 3";
- Enfin, on se souviendra que StringBuilder n’est pas synchronisé alors que StringBuffer l’est.