L’objet String est immuable, c’est à dire que son état ne peut pas être modifié après sa création, et toute manipulation entraînera la création d’un nouvel objet ce qui peut diminuer les performances de la JVM.
Pour pallier à ce problème de performance, la classe StringBuffer permet de manipuler des chaînes de caractères sans créer à chaque changement un nouvel objet. Cette classe est méconnue mais existe depuis le JDK 1.0 !
Cependant, il faut savoir que toutes les méthodes de la classe StringBuffer sont synchronisées, elle est dite thread-safe ! Ceci est indispensable si la chaîne de caractères peut être accédée de manière concurrente sinon c’est inutile.
Heureusement, depuis Java 1.5, la nouvelle classe StringBuilder est une copie de StringBuffer mais avec des méthodes non synchronisées permettant ainsi d’améliorer les performances pour la manipulation de chaînes de caractères sans accès concurrent.
J’ai écrit un petit test pour illustrer tout cela.
(Lire la suite…)