Unterschied zwischen StringBuilder und StringBuffer in Java

Muhammad Zeeshan 12 Oktober 2023
  1. der StringBuffer in Java
  2. der StringBuilder in Java
  3. Unterschiede zwischen StringBuilder und StringBuffer in Java
Unterschied zwischen StringBuilder und StringBuffer in Java

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.

Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

Verwandter Artikel - Java String