StringBuffer contre StringBuilder
Java est un langage orienté objet très populaire. En Java, la classe String est fournie pour contenir une séquence de caractères qui ne peut pas être modifiée (une fois initialisée). Alternativement, le langage de programmation Java fournit deux types de séquences modifiables de caractères. Autrement dit, lorsque les programmeurs doivent modifier une certaine chaîne (après l'initialisation), ils doivent utiliser la classe StringBuffer ou la classe StringBuilder, au lieu de la classe String. StringBuffer a été introduit dans JDK 1.0 et la classe StringBuilder a été introduite dans JDK 1.5, en fait en remplacement de la classe StringBuffer (pour les environnements à thread unique).
Qu'est-ce que StringBuffer ?
La classe StringBuffer a été introduite dans JDK 1.0. La classe StringBuffer appartient au package java.lang et est héritée du générique java.lang.object. Les programmeurs ne peuvent pas l'étendre davantage car il s'agit d'une classe finale. La classe StringBuffer implémente les interfaces Serializable, Appendable et CharSequience. Un objet de la classe StringBuffer peut contenir une séquence de caractères mutable et thread-safe. Cela signifie qu'il ressemble beaucoup à un objet String, mais que la séquence de caractères (longueur et contenu) peut être modifiée à tout moment après l'initialisation de l'objet StringBuffer. Cependant, cela doit être fait en utilisant les méthodes spécifiques fournies par la classe StringBuffer. Il existe deux opérations principales dans la classe StringBuffer. Ils sont fournis par les méthodes append() et insert(). Ces méthodes sont surchargées, elles sont donc capables d'accepter des données de tout type, telles que des entiers et des longs. Les deux méthodes transforment d'abord toute entrée en chaîne, puis ajoutent (ajoute ou insère) les caractères de la chaîne correspondante à l'objet Stribbuffer existant. La méthode append() ajoute la chaîne convertie à la fin de l'objet StringBuffer existant, tandis que la méthode insert() ajoute les caractères d'entrée au point d'insertion spécifié.
Qu'est-ce que StringBuilder ?
La classe StringBuilder a été introduite dans JDK 1.5. L'API StringBuilder est très similaire à l'API StringBuffer. En fait, la classe StringBuilder a été introduite en remplacement de la classe StringBuffer (pour les applications à un seul thread). La classe StringBuilder appartient au package java.lang et est héritée de l'objet générique java.lang.object. C'est une classe finale et les programmeurs ne peuvent donc pas l'étendre. La classe StringBuilder implémente les interfaces Serializable, Appendable et CharSequience. Un objet de la classe StringBuilder peut contenir une séquence de caractères mutable mais non thread-safe. Cela signifie qu'il ressemble beaucoup à un objet String, mais que la chaîne peut être modifiée à tout moment. Mais la classe StringBuilder ne fournit pas de synchronisation et est donc censée être plus rapide que l'utilisation de la classe StringBuffer. La classe StringBuilder fournit les méthodes append() et insert() avec des fonctionnalités exactement similaires à celles de la classe StringBuffer.
Quelle est la différence entre StringBuffer et StringBuilder ?
Bien que les classes StringBuilder et StringBuffer puissent être utilisées pour des séquences mutables de caractères en Java, elles ont une différence essentielle. Contrairement à la classe StringBuffer, la classe StringBuilder n'est pas thread-safe et ne fournit aucune synchronisation. Par conséquent, il est recommandé d'utiliser la classe StringBuilder à la place de la classe StringBuffer dans les applications à un seul thread, car il est affirmé que la classe StringBuilder sera beaucoup plus rapide que la classe StringBuffer (dans des circonstances normales).