Maison  >  Article  >  Java  >  Introduction à String, StringBuffer et StringBulider

Introduction à String, StringBuffer et StringBulider

零下一度
零下一度original
2017-06-23 09:32:291453parcourir

Tous les trois implémentent l'interface CharSequence, donc CharSequence peut être considérée comme une interface de protocole de chaîne

1 La classe String est une classe immuable, c'est-à-dire qu'une fois qu'un objet String est créé, le contenu qu'il contient. cet objet La séquence de caractères dans est immuable jusqu'à ce que l'objet soit détruit ;

Quand on définit souvent String str=new String("Define me");

str="Changed Me";

La sortie m'a changé. Il semble que Str ait changé. En fait, le point de str a été modifié. Les objets d'origine dans la mémoire tas sont devenus des déchets

Classe StringBuffer

. 🎜>

StringBuffer représente une chaîne avec une séquence de caractères variable. Après la création d'un StringBuffer, la chaîne peut être modifiée via les méthodes insert(), append(), reverse(), serChaAt() et setLength(). Enfin, après génération, il peut être converti en un objet String via la méthode toString()

3. StringBuilder est nouveau dans JDK1.5 et représente également un objet chaîne similaire à StringBuffer, les constructeurs et les méthodes de. les deux classes sont également fondamentalement les mêmes, StringBuffer était thread-safe à cette époque et StringBulider n'implémentait pas la sécurité des threads, les performances étaient donc légèrement supérieures. Par conséquent, si vous créez un objet chaîne avec des caractères variables, vous devez donner la priorité à la classe StringBuilder

comparaison


1 Les trois ont la relation suivante en termes de vitesse d'exécution :

. StringBuilder>StringBuffer> String;

2. : Premièrement, la longueur est extensible, deuxièmement, StringBuffer est thread-safe et StringBuilder n'est pas sécurisé. Alors, comment leurs longueurs sont-elles étendues de manière dynamique et comment la sécurité des threads de StringBuffer est-elle implémentée ?

Tous les trois implémentent l'interface CharSequence, donc CharSequence peut être considérée comme une interface de protocole de chaîne

Toutes les méthodes dans StringBuffer sauf la méthode de construction Limitée par synchronisé

Les deux longueurs extensibles sont vérifiées par EnsureCapacity(int minimumCapacity) pour vérifier si la longueur actuelle est inférieure au paramètre minimumCapacity. Si vrai, l'espace est alloué. La taille du pas pour allouer un nouvel espace est de deux fois (longueur actuelle + 1).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn