Les chaines en Java - StringBuffer et StringBuilder
StringBuffer
La classe Java StringBuffer est utilisée pour créer une chaîne modifiable. La classe StringBuffer en Java est identique à la classe String, sauf qu’elle peut être modifiée
Constructeurs de StringBuffer
Constructeur | Description |
---|---|
StringBuffer() | crée un tampon de chaîne vide avec la capacité initiale de 16. |
StringBuffer(String str) | crée un tampon de chaîne avec la chaîne spécifiée (str). |
StringBuffer(int capacity) | crée un tampon de chaîne vide avec la capacité spécifiée (capacity). |
Méthodes importantes de la classe StringBuffer
Méthode | Description |
---|---|
public synchronized StringBuffer append(String s) | est utilisée pour ajouter la chaîne spécifiée à la fin du chaîne. La méthode append() est surchargée : append(char), append(boolean), append(int), append(float), append(double) etc. |
public synchronized StringBuffer insert(int offset, String s) | est utilisée pour insérer la chaîne spécifiée à la position spécifiée. La méthode insert() est surchargée : insert(int, char), insert(int, boolean), insert (int, int), insert (int, float), insert(int, double), etc. |
public synchronized StringBuffer replace(int startIndex, int endIndex, String str) | est utilisée pour remplacer la chaîne de startIndex et endIndex spécifiés. |
public synchronized StringBuffer delete(int startIndex, int endIndex) | est utilisée pour supprimer la chaîne de startIndex et endIndex spécifiés. |
public synchronized StringBuffer reverse() | est utilisée pour inverser la chaîne. |
public int capacity() | est utilisée pour renvoyer la capacité actuelle. |
public void ensureCapacity(int minimumCapacity) | est utilisée pour assurer une capacité au moins égale au minimumCapacity. |
public char charAt(int index) | est utilisée pour retourner le caractère à la position spécifiée. |
public in length() | est utilisée pour renvoyer la longueur de la chaîne, c'est-à-dire le nombre total de caractères. |
public String substring(int beginIndex) | est utilisée pour renvoyer la sous-chaîne à partir du beginIndex spécifié. |
public String substring(int beginIndex, int endIndex) | est utilisée pour renvoyer la sous-chaîne à partir des beginIndex et endIndex spécifiés. |
Exemple :
public class Test { public static void main(String args[]) { StringBuffer s = new StringBuffer("Developpement Informatique"); System.out.println("Taille : " + s.length()); System.out.println("Capacité : " + s.capacity()); s.append(".com"); System.out.println("String après append : " + s); s.insert(13, "-"); System.out.println("String après insert : " + s); s.reverse(); System.out.println("String après reverser : " + s); s.delete(0, 5); System.out.println("String après delete(0, 5) : " + s); s.deleteCharAt(7); System.out.println("String après deleteCharAt(7) : " + s); s.replace(0, 5, "Meknes"); System.out.println("String après replace : " + s); } }
Capacité : 42
String après append : Developpement Informatique.com
String après insert : Developpement- Informatique.com
String après reverser : moc.euqitamrofnI -tnemeppoleveD
String après delete(0, 5) : uqitamrofnI -tnemeppoleveD
String après deleteCharAt(7) : uqitamrfnI -tnemeppoleveD
String après replace : MeknesmrfnI -tnemeppoleveD
Quelques faits intéressants:
- java.lang.StringBuffer hérite de la classe Object.
- Toutes les interfaces implémentées de la classe StringBuffer: Serializable, Appendable, CharSequence.
- Les StringBuffer sont sûrs pour une utilisation par plusieurs threads. Les méthodes peuvent être synchronisées si nécessaire pour que toutes les opérations d'une instance donnée se comportent comme si elles se produisaient dans un ordre séquentiel donné.
- Chaque fois qu'une opération impliquant une séquence source (telle que l'ajout ou l'insertion à partir d'une séquence source) est effectuée, cette classe ne se synchronise que sur StringBuffer effectuant l'opération, et non sur la source.
- Elle hérite de certaines des méthodes de la classe object qui sont clone, equals, finalize, getClass, hashCode, notify, notifyAll.
StringBuilder
StringBuilder en Java représente une séquence de caractères mutable. Étant donné que la classe String en Java crée une séquence de caractères immuable, la classe StringBuilder fournit une alternative à la classe String, car elle crée une séquence mutable de caractères.
La fonction de StringBuilder est très similaire à la classe StringBuffer, car les deux offrent une alternative à String Class en créant une séquence de caractères modifiable. Cependant, la classe StringBuilder diffère de la classe StringBuffer sur la base de la synchronisation. La classe StringBuilder n'offre aucune garantie de synchronisation, contrairement à la classe StringBuffer.
Par conséquent, cette classe est conçue pour être utilisée en remplacement immédiat de StringBuffer dans les endroits où StringBuffer était utilisée par un seul thread (comme c'est généralement le cas). Dans la mesure du possible, il est recommandé d'utiliser cette classe plutôt que StringBuffer, car elle sera plus rapide dans la plupart des mises en œuvre. Les instances de StringBuilder ne sont pas sûres pour être utilisées par plusieurs threads. Si une telle synchronisation est requise, il est recommandé d'utiliser StringBuffer.