Maison > Java > javaDidacticiel > le corps du texte

Quelle est la différence entre stringbuffer et stringbuilder dans une chaîne ?

coldplay.xixi
Libérer: 2020-07-02 14:14:42
original
4941 Les gens l'ont consulté

La différence entre stringbuffer et stringbuilder dans string est la suivante : 1. StringBuffer est thread-safe, tandis que StringBuilder n'est pas thread-safe ; 2. StringBuffer expose la synchronisation des méthodes, mais pas StringBuilder.

Quelle est la différence entre stringbuffer et stringbuilder dans une chaîne ?

La différence entre stringbuffer et stringbuilder dans string est :

Différence 1 : sécurité des threads

StringBuffer : thread-safe, StringBuilder : thread-unsafe. Parce que toutes les méthodes publiques de StringBuffer sont synchronisées et que StringBuilder n'est pas modifié par StringBuilder.

Extrait de code StringBuffer :

@Override
public synchronized StringBuffer append(String str) {
    toStringCache = null;
    super.append(str);
    return this;
}
Copier après la connexion

Différence 2 : Buffer

Extrait de code StringBuffer :

private transient char[] toStringCache;
@Override
public synchronized String toString() {
    if (toStringCache == null) {
        toStringCache = Arrays.copyOfRange(value, 0, count);
    }
    return new String(toStringCache, true);
}
Copier après la connexion

Extrait de code StringBuilder :

@Override
public String toString() {
    // Create a copy, don't share the array
    return new String(value, 0, count);
}
Copier après la connexion

On peut voir que chaque fois que StringBuffer atteint toString, il utilisera directement la valeur toStringCache de la zone tampon pour construire une chaîne.

StringBuilder doit copier le tableau de caractères à chaque fois, puis construire une chaîne.

Ainsi, le vidage du cache est également une optimisation de StringBuffer, mais la méthode toString de StringBuffer est toujours synchrone.

Différence 3 : Performances

Étant donné que StringBuffer est thread-safe, toutes ses méthodes publiques sont synchronisées et StringBuilder ne verrouille ni ne synchronise les méthodes, donc il n'y a aucun doute que les performances de StringBuilder sont bien supérieures à celles de StringBuffer.

Recommandations d'apprentissage associées : Tutoriel vidéo Java

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal