HOWTO · Java
Unterschied zwischen StringBuilder und StringBuffer in Java
In diesem Tutorial werden wir die Unterschiede zwischen den Klassen StringBuilder und StringBuffer diskutieren, die in Java verfügbar sind.
Auf dieser Seite
Dieses Tutorial behandelt die Unterschiede zwischen den Java-Klassen StringBuilder und StringBuffer. Also lasst uns anfangen!
der StringBuffer in Java
Die Klasse StringBuffer gibt uns ein Mittel, mit dem wir veränderliche String-Daten in Java verwenden können. Diese Saiten können unbedenklich von mehreren Fäden gleichzeitig ohne Risiko genutzt werden.
Syntax:
StringBuffer b = new StringBuffer("Shanii");
Beispiel:
public class BufferexamplebyZeeshan {
public static void main(String[] args) {
StringBuffer b = new StringBuffer(" Hi! ");
b.append(" Muhammad Zeeshan Here! ");
b.append(" Let's Code ");
System.out.println(b);
}
}
Ausgang:
Hi! Muhammad Zeeshan Here! Let's Code
der StringBuilder in Java
StringBuilder gibt uns auch Zugriff auf veränderliche Strings, obwohl diese Implementierung keine Thread-Sicherheit hat. Es können nicht mehrere Threads gleichzeitig verwendet werden.
Da diese Klasse diese zusätzliche Funktionalität nicht anwendet, ist sie viel schneller als StringBuffer.
Syntax:
StringBuilder s1 = new StringBuilder("Shani");
Beispiel:
public class BuilderexamplebyZeeshan {
public static void main(String[] args) {
StringBuilder s = new StringBuilder(" Hey!");
s.append("I am a Programmer");
System.out.println(s);
}
}
Ausgang:
Hey!I am a Programmer
Unterschiede zwischen StringBuilder und StringBuffer in Java
Sehen wir uns die Unterschiede zwischen StringBuilder und StringBuffer anhand der folgenden Anweisungen an:
| NEIN. | StringBuilder |
StringBuffer |
|---|---|---|
| 1 | Die Funktion StringBuilder wird nicht synchronisiert, ist also nicht Thread-sicher. Dies zeigt an, dass zwei verschiedene Threads gleichzeitig die Methoden der Klasse StringBuilder aufrufen können. |
Das Objekt StringBuffer wird synchronisiert, ist also Thread-sicher. Es bedeutet, dass die Methoden von StringBuffer nicht gleichzeitig von zwei verschiedenen Threads aufgerufen werden können. |
| 2 | Es wird im heap-Speicher des Computers generiert. |
Es wird auch im heap-Speicher generiert. |
| 3 | Bietet uns Strings, die veränderlich sind. |
Wir können den String ändern, ohne ein Objekt zu konstruieren. |
| 4 | Es kann einen Standardwert von 16 Zeichen speichern. | Wie StringBuilder kann es einen Standardwert von 16 Zeichen speichern. |
| 5 | Das schnellste von allen, da es die Veränderlichkeit unterstützt und verhindert, dass viele Threads gleichzeitig arbeiten. | Sie ist langsamer als die Klasse StringBuilder, da sie es mehreren Threads ermöglicht, gleichzeitig Aktionen auszuführen. |
| 6 | Die Verkettung erfolgt mit der Funktion append(). |
Seine Verkettung erfolgt ebenfalls mit der Funktion append(). |
Beispiel mit StringBuilder und StringBuffer
StringBuilder ist schneller als StringBuffer, da es nicht synchronisiert ist. Schauen wir uns ein einfaches Beispiel an, um sowohl StringBuilder als auch StringBuffer zu vergleichen:
public class Main {
public static void main(String[] args) {
int RandomNumber = 5677839;
long time;
StringBuffer s = new StringBuffer();
time = System.currentTimeMillis();
for (int i = RandomNumber; i-- > 0;) {
s.append("");
}
System.out.println(System.currentTimeMillis() - time);
StringBuilder b = new StringBuilder();
time = System.currentTimeMillis();
for (int i = RandomNumber; i > 0; i--) {
b.append("");
}
System.out.println(System.currentTimeMillis() - time);
}
}
Ausgang:
161
17
Das obige Beispiel liefert den Zahlenvergleich von 161 Millisekunden für StringBuffer und 17 Millisekunden für StringBuilder, was deutlich macht, dass StringBuilder die effizientere Variante ist.