La valeur de la chaîne est immuable.
La classe StringBuffer est la même que la classe String et est également utilisée pour représenter les chaînes. utilisation de la mémoire.
StringBuffer alloue un tampon de 16 octets par défaut.
StringBuffer n'est pas comme String.
StringBuffer str1 = new StringBuffer (); de 16 octets de longueur est réservé derrière StringBuffer str3 = new StringBuffer (www.weixueyuan.net);
Les principales méthodes de la classe StringBuffer
Les méthodes de la classe StringBuffer se concentrent principalement sur le fonctionnement des chaînes, telles que l'ajout, l'insertion et la suppression, qui est également la principale différence entre la classe StringBuffer et la classe String. Dans le développement réel, si vous devez apporter des modifications fréquentes à une chaîne, il est recommandé d'utiliser StringBuffer.
1) Méthode d'ajout ()
La méthode APPEND () est utilisée pour ajouter le contenu à la fin de la chaîne actuelle, similaire à une concaténation de chaîne. Après avoir appelé cette méthode, le contenu de l'objet StringBuffer change également, par exemple:
StringBuffer str = new StringBuffer ("Biancheng100"); str.append (true);
Ensuite, la valeur de l'objet STR deviendra "Biancheng100True". Notez que le contenu indiqué par STR a changé, et non le pointage de STR a changé.
L'opération "+" d'une chaîne consiste en fait à créer un objet StringBuffer d'abord, puis à appeler la méthode APPEND () pour épisser les fragments de chaîne, et enfin appeler la méthode toString () pour le convertir en une chaîne.
De cette façon, l'opération de connexion de String a plus d'opérations supplémentaires que StringBuffer, et l'efficacité sera inévitablement réduite.
Cependant, pour les cordes plus petites, l'opération "+" est plus intuitive et lisible, et parfois vous pouvez sacrifier un peu l'efficacité.
2) DeleteCharat ()
La méthode Deletecharat () est utilisée pour supprimer les caractères en position spécifiée et pour former une nouvelle chaîne de caractères restants. Par exemple:
StringBuffer str = new StringBuffer ("ABCDEF"); Str.
Ce code supprimera le caractère avec une valeur d'index de 3, c'est-à-dire le caractère "d".
Vous pouvez également supprimer plusieurs caractères à la fois via la méthode delete (), par exemple:
StringBuffer str = new StringBuffer ("ABCDEF"); str.Delete (1, 4);
Ce code supprimera les caractères avec des valeurs d'index entre 1 et 4, y compris la valeur de l'index 1, mais pas 4.
3) Méthode INSERT ()
insert () est utilisé pour insérer une chaîne à un emplacement spécifié et peut être considéré comme une version mise à niveau de APPEND (). Par exemple:
StringBuffer str = new StringBuffer ("ABCDEF"); str.insert (3, "xyz");
La chaîne pointée par STR est ABCDXYZEF.
4) Méthode setCharat ()
La méthode setCharat () est utilisée pour modifier les caractères en position spécifiée. Par exemple:
StringBuffer str = new StringBuffer ("ABCDEF"); str.Setcharat (3, 'z');
Ce code modifiera le caractère avec une valeur d'index de 3 à Z, et la chaîne pointée par STR est ABCZEF.
Ce qui précède n'est qu'une explication simple de certaines méthodes couramment utilisées pour plus de méthodes et d'explications, veuillez vous référer à la documentation de l'API.
Comparaison de l'efficacité entre String et StringBuffer
Pour voir plus clairement leur efficacité d'exécution, le code suivant ajoute 26 lettres en anglais 10 000 fois.
classe publique Demo {public static void main (String [] args) {String Fragment = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; Int Times = 10000; (int i = 0; i <fois; i ++) {str1 + = fragment;} long timeend1 = System.currentTimeMillis (); // par StringBuffer Long TimeStart2 = System.Currenttimemillis (); StringBuffer str2 = new StringBuffer (); (); System.out.println ("StringBuffer:" + (Timeend2 - TimeStart2) + "MS"); Résultats en cours:
String: 5287msStringBuffer: 3ms
La conclusion est évidente, l'efficacité d'exécution de StringBuffer est des milliers de fois plus rapidement que la chaîne.
String: 35923msStringBuffer: 8ms
Par conséquent, il est fortement recommandé d'utiliser StringBuffer lorsqu'il implique beaucoup d'opérations de chaîne.
Classe StringBuilder
Les fonctions de la classe StringBuilder et de la classe StringBuffer sont fondamentalement similaires, et les méthodes sont similaires. être un peu plus rapide.
L'interface CharSequence est implémentée dans StringBuffer, StringBuilder et String.
CharSequence est une interface qui définit les opérations de chaîne.
Le processus d'implémentation de l'interface CharSequence de StringBuffer, StringBuilder et String est différent, comme indiqué sur la figure ci-dessous:
On peut voir que String implémente directement l'interface CharSequence; StringBuilder et StringBuffer sont deux séquences de caractères variables, toutes deux héritent de AbstractStringBuilder et implémente l'interface CharSequence.
Résumer
Sécurité du fil:
StringBuffer: Thread-Safe
StringBuilder: les fils ne sont pas sûrs
vitesse:
D'une manière générale, la vitesse du rapide aunt est StringBuilder> StringBuffer> String, bien sûr, c'est relatif, pas absolu.
Environnement d'utilisation:
Utilisez une chaîne pour faire fonctionner une petite quantité de données;
Utilisez StringBuilder pour faire fonctionner de grandes quantités de données dans un seul thread;
Le fonctionnement multithreading de grandes quantités de données utilise StringBuffer.