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.
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!