Avatar ·

Quelle est la différence entre StringBuilder et StringBuffer en Java ?

Bonjour à tous ! J'apprends Java et j'écris un petit module serveur pour traiter des logs. J'ai besoin de construire des chaînes à partir de nombreux fragments, et je sais que la concaténation avec "+" dans une boucle est mauvaise car elle crée beaucoup d'objets String superflus. J'ai commencé à utiliser StringBuffer, mais mon tech lead m'a dit qu'il valait mieux passer à StringBuilder. Je n'ai pas bien compris pourquoi. Sur Internet, on dit que les deux classes font la même chose : permettre de modifier une chaîne sans créer de nouveaux objets. Pourquoi alors deux classes ? Et laquelle choisir ? Voici un exemple de mon code : ```java public class LogBuilder { public static void main(String[] args) { StringBuffer log = new StringBuffer(); for (int i = 0; i < 1000; i++) { log.append("Événement #").append(i).append(": "); log.append("Traitement terminé\n"); } System.out.println(log.toString()); } } ``` Si je remplace simplement StringBuffer par StringBuilder, le code continue de fonctionner. Cela signifie-t-il que