Maison  >  Article  >  Java  >  Analyse de la différence entre java_String et StringBuffer

Analyse de la différence entre java_String et StringBuffer

高洛峰
高洛峰original
2017-01-22 09:34:131325parcourir

La chaîne fournie par cette classe StringBuffer peut être modifiée. Vous pouvez utiliser StringBuffer lorsque vous savez que les données de caractères vont changer. En règle générale, vous utilisez StringBuffers pour construire dynamiquement des données de caractères.

Il existe trois classes en Java qui sont responsables des opérations sur les caractères.

1.Character fonctionne sur un seul caractère, et

2.String fonctionne sur une chaîne de caractères. Classes immuables.

3.StringBuffer fonctionne également sur une chaîne de caractères, mais c'est une classe variable.

String :
est un objet, pas un type primitif.
est un objet immuable. Une fois créé, sa valeur ne peut pas être modifiée.
Les modifications apportées aux objets String existants sont toutes nouvelles. Créez un nouvel objet et enregistrez-y la nouvelle valeur.
String est une classe finale, c'est-à-dire qu'elle ne peut pas être héritée.

StringBuffer :
est un objet mutable, lorsqu'il est modifié. l'objet ne sera pas recréé comme String
Il ne peut être créé que via le constructeur,
StringBuffer sb = new StringBuffer();
remarque : il ne peut pas être payé via le symbole de valeur
sb. = "bienvenue ici!";//Après la création de l'objet error
, de l'espace mémoire sera alloué dans la mémoire et un null sera initialement enregistré. Lorsque vous payez la valeur à StringBuffer
, vous pouvez transmettre son ajout. méthode.
sb.append("hello");

Ce qui précède est un extrait, qui est courant sur Internet. Ce qui suit est ma propre opinion ajoutée :

L'adresse ne peut pas. être modifié, la longueur et le contenu peuvent être modifiés. La méthode append() consiste à ajouter lorsque la mémoire réservée est dépassée, la mémoire est doublée.

Comparaison d'efficacité : StringBuffer est supérieur à String. Étant donné que StringBuffer dispose d'un espace réservé et continue d'ajouter, il ne fonctionne que sur un seul objet. La chaîne ne peut pas être modifiée et les objets ne peuvent être créés que de manière répétée pour obtenir une modification. ——Si vous ajoutez, remplacez, modifiez, insérez et supprimez fréquemment des chaînes, il est préférable d'utiliser StringBuffer. Si vous devez utiliser String, vous pouvez utiliser StringBuffer pour appeler toString() afin de le convertir en String.

public static void main(String[] args) {
         String a="";
         long begin=System.currentTimeMillis();
         for (int i = 0; i <10000; i++) {
             a+=i;
         }
         long end=System.currentTimeMillis();
         System.out.println("String运行时间:"+(end-begin));
         System.out.println("-----------------");
         StringBuffer b=new StringBuffer();
         long begin2=System.currentTimeMillis();
         for (int i = 0; i <10000; i++) {
             b.append(i);
         }
         long end2=System.currentTimeMillis();
         System.out.println("StringBuffer运行时间:"+(end2-begin2));
     }

Ma machine est plutôt nulle, et le résultat après exécution est

Durée d'exécution de la chaîne : 164593
--------------- --
Durée d'exécution de StringBuffer : 31

Et String a la méthode contain, mais pas StringBuffer. contient signifie contenir. Ici, vous pouvez rappeler que le résultat de l'exécution de la méthode contain

 public static void main(String[] args) {
         String a="abc";
         boolean str=a.contains("b");
         System.out.println(str);
     }

est

true

Explication plus détaillée de la classe StringBuffer en Java Veuillez faire attention à le site Web PHP chinois pour les articles connexes !

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