Maison  >  Article  >  Java  >  Analyse des différences entre java_String et StringBuffer

Analyse des différences entre java_String et StringBuffer

巴扎黑
巴扎黑original
2017-05-21 14:18:031390parcourir

La plateforme JAVA propose deux classes : String et StringBuffer, qui peuvent stocker et exploiter des chaînes, c'est-à-dire des données de caractères contenant plusieurs caractères. La classe String fournit des chaînes numériquement immuables.

La chaîne fournie par cette classe StringBuffer est 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.

Le code est le suivant :

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. contain signifie y compris. Ici, vous pouvez rappeler que le code de la méthode contain

est le suivant :

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

Le résultat de l'exécution est

true

.

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