Table des matières
Comparaison simple
2. Chaîne de traitement de chaîne
Exemple 2 :
3 Caractéristiques de construction StringBuilder / StringBuffer
4. Comparaison de l'épissage de chaînes de traitement String et StringBuilder
L'exemple 3 est préféré
Maison Java javaDidacticiel Vous devez comprendre String, StringBuilder, StringBuffer

Vous devez comprendre String, StringBuilder, StringBuffer

Jul 20, 2018 am 09:37 AM
string stringbuffer stringbuilder

La relation et la différence entre les trois classes String, StringBuilder et StringBuffer a toujours été un problème classique en Java. Cette fois, je vais parler de quelques connaissances sur ces trois classes

Comparaison simple

.
  • String : Constante de caractère

  • StringBuilder : Variable de caractère

  • StringBuffer : Variable de caractère

String est un type constant et est déclaré comme classe finale. Toutes les propriétés sont également de type final, donc une fois l'objet String créé, il ne peut pas être modifié
StringBuilder / StringBuffer deux classes appartiennent à une variable ; les types peuvent être modifiés, ce sont toutes des classes fournies pour résoudre le problème du trop grand nombre d'objets intermédiaires produits par la concaténation de chaînes.

  • Vitesse d'exécution StringBuilder > StringBuffer > String

  • Sécurité du thread : StringBuffer

  • Non Sécurité des threads : StringBuilder

StringBuilder n'est pas très différent de StringBuffer en substance, mais comme StringBuilder supprime la partie sécurité des threads de StringBuffer, il réduit efficacement la surcharge. Par conséquent, StringBuilder est le premier choix pour les opérations d'épissage de chaînes dans la plupart des cas

2. Chaîne de traitement de chaîne

Exemple 1 :

String s = "abcd";
s = s + "fgh";
Copier après la connexion

Plusieurs les gens pensent à tort que le type String est variable lors d'un tel traitement de chaîne.

Mais en fait, le processus de traitement de ce code par JVM est le suivant : créez d'abord l'objet s, attribuez la valeur "abcd", puis lors du traitement de la deuxième ligne de code, créez un autre objet s, attribuez la valeur "abcdfgh", puis le premier objet est récupéré.

Cela équivaut donc à ce que le premier s soit inchangé et le second s soit un nouvel objet

Exemple 2 :

String str = “This is only a” + “simple” + “test”;
Copier après la connexion

Ce code est équivalent àString str = “This is only a simple test”;

Exemple 3 :

String str2 = "This is only a";
String str3 = "simple";
String str4 = "test";
String str1 = str2 +str3 + str4;
Copier après la connexion

Ce code sera également traité selon le processus de l'exemple 1

3 Caractéristiques de construction StringBuilder / StringBuffer

. Lors du processus de construction de ces deux objets, ils demandent d'abord un tableau de caractères (char[]) selon la taille par défaut. La capacité par défaut est de 16 caractères, mais si elle dépasse, Arrays.copyOf() sera utilisé pour doubler la taille. capacité à 16, 32, 64, 128..., bien sûr, cela affectera les performances, vous pouvez donc personnaliser sa capacité selon vos besoins lors de la création d'un objet

//默认 16 个字符
public StringBuilder() {
    super(16);
}
//构造函数定义容量
public StringBuilder(int capacity) {
    super(capacity);
}
Copier après la connexion

4. Comparaison de l'épissage de chaînes de traitement String et StringBuilder

Nous savons tous qu'il est recommandé d'utiliser StringBuilder lors de l'exécution d'opérations d'épissage de chaînes, mais est-il toujours recommandé d'utiliser StringBuilder au lieu de String pour l'épissage de chaînes ? Évidemment non.

Exemple 1 :

String str = "123";
String str1 = str + "456";
String str2 = new StringBuilder().append(str).append("def").toString();
Copier après la connexion

Dans ce cas, il y a peu de différence d'efficacité entre les deux méthodes de traitement

DansJDK 8 Dans , l'opération d'épissage de chaîne de String sera automatiquement convertie en StringBuilder par le compilateur et la méthode append sera appelée. En raison de ce schéma d'optimisation, l'efficacité de traitement des deux classes dans ce cas n'est pas très différente ; tandis que dans JDK 9, afin d'optimiser davantage l'opération de chaîne, StringConcatFactory est fourni, en tant qu'entrée unifiée, pour optimiser davantage l'opération d'épissage de chaîne.

Exemple 2 :

String str = "";
for (int i = 0; i < 1000; i++) {
    str += "12345";
}

StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    stringBuilder.append("12345");
}
Copier après la connexion

Dans ce cas, StringBuilder est plus rapide

Dans la boucle, à chaque fois que "+" est exécuté, Create un objet String, il y aura donc beaucoup de consommation de création et de recyclage d'objets.

Pour faire simple, dans la boucle pour effectuer un épissage de chaîne sur le même objet chaîne, StringBuilder

L'exemple 3 est préféré

String str1 = "123" + "456" + "789";

String str2 = new StringBuilder("123").append("456").append("789").toString();
Copier après la connexion

Dans ce cas, String est plus rapide

Nous savons tous que String str1 = "123" + "456" + "789"; est en fait équivalent à String str1 = "123456789";, mais StringBuilder doit appeler la méthode append plusieurs fois.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Convertissez les types de données de base en chaînes à l'aide de la fonction String.valueOf() de Java Convertissez les types de données de base en chaînes à l'aide de la fonction String.valueOf() de Java Jul 24, 2023 pm 07:55 PM

Convertir les types de données de base en chaînes à l'aide de la fonction String.valueOf() de Java Dans le développement Java, lorsque nous devons convertir les types de données de base en chaînes, une méthode courante consiste à utiliser la fonction valueOf() de la classe String. Cette fonction peut accepter les paramètres des types de données de base et renvoyer la représentation sous forme de chaîne correspondante. Dans cet article, nous explorerons comment utiliser la fonction String.valueOf() pour les conversions de types de données de base et fournirons quelques exemples de code pour

Comment convertir un tableau de caractères en chaîne Comment convertir un tableau de caractères en chaîne Jun 09, 2023 am 10:04 AM

Méthode de conversion d'un tableau de caractères en chaîne : cela peut être réalisé par affectation. Utilisez la syntaxe {char a[]=" abc d\0efg ";string s=a;} pour laisser le tableau de caractères attribuer directement une valeur à la chaîne et l'exécuter. le code pour terminer la conversion.

Quelles sont les méthodes pour effacer stringbuilder ? Quelles sont les méthodes pour effacer stringbuilder ? Oct 12, 2023 pm 04:57 PM

Les méthodes pour effacer stringbuilder sont : 1. Utilisez la méthode setLength(0) pour effacer l'objet StringBuilder ; 2. Utilisez la méthode delete(0, length) pour effacer l'objet StringBuilder ; ") pour effacer l'objet StringBuilder ; 4., utilisez new StringBuilder() pour recréer un nouvel objet StringBuilder.

Utilisez la méthode delete() de la classe StringBuilder en Java pour supprimer une partie du contenu de la chaîne Utilisez la méthode delete() de la classe StringBuilder en Java pour supprimer une partie du contenu de la chaîne Jul 26, 2023 pm 08:43 PM

Utilisez la méthode delete() de la classe StringBuilder en Java pour supprimer une partie du contenu d'une chaîne. La classe String est une classe de traitement de chaînes couramment utilisée en Java. Elle possède de nombreuses méthodes couramment utilisées pour les opérations sur les chaînes. Cependant, dans certains cas, nous devons modifier fréquemment les chaînes, et l'immuabilité de la classe String entraînera la création fréquente de nouveaux objets chaîne, affectant ainsi les performances. Pour résoudre ce problème, Java fournit la classe StringBuilder, qui

Convertir une chaîne en StringBuilder en Java Convertir une chaîne en StringBuilder en Java Sep 02, 2023 pm 03:57 PM

La méthode append() de la classe StringBuilder accepte une valeur String et l'ajoute à l'objet actuel. Convertir la valeur de chaîne en objet StringBuilder - Obtenir la valeur de chaîne. Ajoutez à l’aide de la méthode append() pour obtenir la chaîne dans StringBuilder. Exemple Dans le programme Java suivant, nous convertissons un tableau de chaînes en un seul objet StringBuilder. Démonstration en temps réel publicclassStringToStringBuilder{ publicstaticvoidmain(Stringargs[]){&a

Utilisez la fonction String.replace() de Java pour remplacer des caractères (chaînes) dans une chaîne Utilisez la fonction String.replace() de Java pour remplacer des caractères (chaînes) dans une chaîne Jul 25, 2023 pm 05:16 PM

Remplacez les caractères (chaînes) dans une chaîne à l'aide de la fonction String.replace() de Java. En Java, les chaînes sont des objets immuables, ce qui signifie qu'une fois qu'un objet chaîne est créé, sa valeur ne peut pas être modifiée. Cependant, vous pouvez rencontrer des situations dans lesquelles vous devez remplacer certains caractères ou chaînes dans une chaîne. À l'heure actuelle, nous pouvons utiliser la méthode replace() dans la classe String de Java pour implémenter le remplacement de chaîne. La méthode replace() de la classe String a deux types :

Interprétation de la documentation Java : introduction détaillée à la méthode substring() de la classe StringBuilder Interprétation de la documentation Java : introduction détaillée à la méthode substring() de la classe StringBuilder Nov 03, 2023 pm 04:31 PM

Interprétation de la documentation Java : Introduction détaillée à la méthode substring() de la classe StringBuilder Introduction : En programmation Java, le traitement des chaînes est l'une des opérations les plus courantes. Java fournit une série de classes et de méthodes pour le traitement des chaînes, parmi lesquelles la classe StringBuilder est un choix couramment utilisé pour les opérations fréquentes sur les chaînes. Dans la classe StringBuilder, la méthode substring() est une méthode très utile pour intercepter les sous-chaînes de chaînes. Cet article sera

Explication détaillée de 2 mots en chaîne, yyds Explication détaillée de 2 mots en chaîne, yyds Aug 24, 2023 pm 03:56 PM

Bonjour à tous, aujourd'hui je vais partager avec vous les connaissances de base de Java : String. Inutile de dire l'importance de la classe String, on peut dire que c'est la classe la plus utilisée dans notre développement back-end, il est donc nécessaire d'en parler.

See all articles