Java --- StringBuffer et StringBuilder Concept dans le cas de la chaîne ne change pas souvent

Concept

Dans le cas de la chaîne ne change pas souvent, nous préférons cordes.

String « + » point peut également être utilisé pour modifier la chaîne, la chaîne str = « I » + « am » + « chaîne » efficacité plus rapide de temps, mais avec « + » épissage objet chaîne, une pluralité de consommatrices d'espace et exécuté inefficace (nouveaux objets, objets recyclés passent beaucoup de temps), surtout quand la mémoire est plus après que l'objet de référence, GC a commencé à travailler de JVM, aura un impact sur les performances du système.

StringBuffer pour résoudre un grand nombre de concaténation de chaîne pour générer beaucoup de problèmes lorsque les objets intermédiaires à condition de classe, il est une séquence variable thread-safe de caractères, semblable à une chaîne, mais peut être modifiée.

StringBuilder 5 comme JDK version des classes supplémentaires StringBuffer, StringBuffer est la classe d'équivalence, mais il a été spécialement conçu pour le seul thread.

StringBuffer

A tout moment, le StringBuffer contenant certaines séquences de caractères, mais la longueur et le contenu de la séquence peut être modifiée par un processus d'appel spécifique.
StringBuffer pour l'utilisation de multi-threading est très sûr, ses méthodes sont synchronisées , où si nécessaire que toutes les opérations pour un cas particulier est comme se produisent dans un ordre de séquence particulier, cette méthode a émis séquence d' appel en accord avec chaque mono-thread a.
Pour le principal append StringBuffer opération et insérer des méthodes qui ont fait l' objet de surcharge qui peuvent accepter des données sous une forme quelconque.
Chacun a une capacité de StringBuffer. Tant que la longueur de la chaîne de caractères dans la séquence de pas plus de StringBuffer, il ne sera pas affecter un nouveau tableau d'espace de mémoire tampon interne. Si la mémoire tampon interne déborde, il étendra automatiquement l'espace.
StringBuilder

StringBuilder séquence est une variable de chaîne. Cette classe fournit l'API de coexistence StringBuffer, mais ces méthodes ne garantissent pas la synchronisation. Cette classe est conçue comme une alternative au StringBuffer, StringBuffer lorsque ceux -ci sont à usage unique thread ( le plus souvent le cas).
Des exemples de StringBuilder lors de l' utilisation de plusieurs threads est pas sûr. Si vous avez besoin d'enfiler la synchronisation, il est recommandé d'utiliser StringBuffer.
méthode

Méthode Signification de type
StringBuffer la append (int I) a de nombreuses surcharges, ajoutez paramètre chaîne représente la fin de la mémoire tampon
insert StringBuffer (offset, int i ) a de nombreuses surcharges, ajouter des paramètres à la position spécifiée indique une chaîne de
carbonisation charAt ( int index) renvoie la séquence spécifiée de l' indice de carbonisation valeur
StringBuffer supprimer (début int, int end ) retirer la chaîne de neutrons de séquence de caractères
int indexOf (string str) retourne l'index de la première occurrence de la chaîne spécifiée
int lastIndexOf (string str) ci - dessus, à partir de la après la recherche avant
longueur int () renvoie le nombre de caractères dans le tampon
StringBuffer remplacer (int début, de fin int , String str) caractère sous - chaîne remplacer le paramètre spécifié sous - chaîne de caractères
StringBuffer inverse () séquence inversée
setCharAt void (int index, char ch) l'indice du jeu de caractères i est CH
CharSequence - séquence dans (int start, End int) renvoie la sous - chaîne d'une nouvelle de charbon
sous - chaîne String (début int [int end]) renvoie la sous - chaîne d'une chaîne
String toString () chaîne à retourner la séquence de données indique
la même méthode StringBuilder et StringBuffer

Exemple

public class Test {
public static void main (String [args]) {

STR = new new StringBuilder StringBuilder ();
str.append ( "BuilderBuffer");
System.out.println (STR); BuilderBuffer //
// ajouter des caractères à l'StringBuilder avec l'append
str.insert (7, "et".),
Le système .out.println (STR); BuilderandBuffer //
// ajouter un caractère est inséré dans le StringBuilder
System.out.println (str.charAt (4).); // D
// retourner la valeur d'indice de carbonisation 4
System.out.println (str.indexOf ( "B")); // 0
System.out.println (str.lastIndexOf ( "B")); // 10
// recherche du même caractère de l'avant et de la valeur de l' indice B ne retourne pas le même
système .out.println (str.length ()); // 16
// longueur de caractère de retour StringBuilder
System.out.println (str.replace (7,10, "ou")); // BuilderorBuffer
// paramètre spécifie remplacés par emplacement chaîne
System.out.println (str.subSequence (7,9) instanceof CharSequence );true //
séquence // retour carbonisation sous - chaîne
System.out.println (str.substring (9, 15)); // tampon
// sous - chaîne retour type String
System.out.println (str.delete (7, 9)); // BuilderBuffer
// supprimer le spécifié position de caractère
System.out.println (str.reverse ()); // reffuBredliuB
// séquence inverse
chaîne str2 = str.toString ();
System.out.println (ch2); reffuBredliuB //
// méthode toString d'appel retourne un objet String
}
}
1.
2
. 3
. 4
. 5
. 6
. 7
. 8
. 9
10
. 11 la figure
12 est
13 est
14
15
16
. 17
18 est
. 19 la figure
20 est
21 est
22 est
23 est
24
25
26 est
27
28
29
30
31
32
Différence

classe String est différent et, classe sujet StringBuffer StringBuilder et peut être modifié plusieurs fois, et ne génère pas de nouveaux objets inutilisés.

Si vous voulez utiliser une petite quantité de données, utilisez String. Si un grand nombre de cas de manipulation de chaînes, dans le cas d'un seul thread, la chaîne doit être utilisée pour faire fonctionner StringBuilder, plusieurs threads, doivent être utilisés StringBuffer.

Nous en général devrait être plus populaire dans le StringBuilder et StringBuffer il prend en charge la même opération, et plus rapide que ce soit, parce que ces méthodes dans la mise en œuvre de la non-synchrone.
----------------
Avertissement: Cet article est blogueur RPSC « de l' article original » zzZsleep7, suivez la CC BY-SA 4.0 accord du droit d'auteur, reproduit, s'il vous plaît joindre le lien source d' origine et cette déclaration. .
Lien original: https: //blog.csdn.net/zzZsleep7/java/article/details/105233861

http://www.zhijieketang.com/user/15697/about
http://www.zhijieketang.com/user/15698
http://www.zhijieketang.com/user/15698/about
http: //www.zhijieketang .com / user / 15699
http://www.zhijieketang.com/user/15699/about
http://c.bailitop.com/user/61995
http://c.bailitop.com/user/61995/about
http : //user.show160.com/8651411
http://m.show160.com/user/pspace/Default.aspx?uid=8651411
https://www.meipian.cn/1i3x1s02
https: //www.meipian. cn / 1i3x08y3
http://www.djhaiba.com/index.php/26829/home
http://www.djhaiba.com/index.php/26832/home
https://www.nowcoder.com/library/book -list / 4242
https://www.nowcoder.com/library/book-list/4243
https://www.nowcoder.com/library/book-list/4244
https://www.nowcoder.com/library/book-list/4245
https://www.nowcoder.com/library/book-list/ 4246

Je suppose que tu aimes

Origine www.cnblogs.com/dasdfdfecvcx/p/12622901.html
conseillé
Classement