Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen Stringbuffer und Stringbuilder in String?

Was ist der Unterschied zwischen Stringbuffer und Stringbuilder in String?

coldplay.xixi
coldplay.xixiOriginal
2020-07-02 14:14:424916Durchsuche

Der Unterschied zwischen Stringbuffer und Stringbuilder in String ist: 1. StringBuffer ist Thread-sicher, während StringBuilder Thread-unsicher ist. 2. StringBuffer macht die Methodensynchronisierung verfügbar, StringBuilder jedoch nicht.

Was ist der Unterschied zwischen Stringbuffer und Stringbuilder in String?

Der Unterschied zwischen Stringbuffer und Stringbuilder in String ist:

Unterschied 1: Thread-Sicherheit

StringBuffer: Thread-sicher, StringBuilder: Thread-unsicher. Da alle öffentlichen Methoden von StringBuffer synchronisiert sind und StringBuilder nicht von StringBuilder geändert wird.

StringBuffer-Codeausschnitt:

@Override
public synchronized StringBuffer append(String str) {
    toStringCache = null;
    super.append(str);
    return this;
}

Unterschied 2: Puffer

StringBuffer-Codeausschnitt:

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

StringBuilder-Codeausschnitt:

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

Es ist ersichtlich, dass StringBuffer jedes Mal, wenn er toString erreicht, direkt den toStringCache-Wert des Pufferbereichs verwendet, um eine Zeichenfolge zu erstellen.

StringBuilder muss jedes Mal das Zeichenarray kopieren und dann eine Zeichenfolge erstellen.

Cache-Flushing ist also auch eine Optimierung von StringBuffer, aber die toString-Methode von StringBuffer ist immer noch synchron.

Unterschied 3: Leistung

Da StringBuffer threadsicher ist, sind alle seine öffentlichen Methoden synchronisiert und StringBuilder sperrt und synchronisiert keine Methoden. Es besteht also kein Zweifel dass die Leistung von StringBuilder viel größer ist als die von StringBuffer.

Verwandte Lernempfehlungen: Java-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Stringbuffer und Stringbuilder in String?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn