Unterschied zwischen StringBuffer und StringBuilder

Unterschied zwischen StringBuffer und StringBuilder
Unterschied zwischen StringBuffer und StringBuilder

Video: Unterschied zwischen StringBuffer und StringBuilder

Video: Unterschied zwischen StringBuffer und StringBuilder
Video: Hausbau Blog| Jalousien vs. Rollladen| Vorteile Nachteile Raffstore| Die Siwuchins 2024, Juli
Anonim

StringBuffer vs. StringBuilder

Java ist eine sehr beliebte objektorientierte Sprache. In Java wird die String-Klasse bereitgestellt, um eine Folge von Zeichen zu speichern, die nicht geändert werden kann (einmal initialisiert). Alternativ stellt die Java-Programmiersprache zwei Arten von veränderlichen Zeichenfolgen bereit. Das heißt, wenn die Programmierer einen bestimmten String (nach der Initialisierung) ändern müssen, müssen sie die StringBuffer-Klasse oder die StringBuilder-Klasse anstelle der String-Klasse verwenden. StringBuffer wurde in JDK 1.0 eingeführt und die StringBuilder-Klasse wurde in JDK 1.5 eingeführt, eigentlich als Ersatz für die StringBuffer-Klasse (für Single-Thread-Umgebungen).

Was ist StringBuffer?

StringBuffer-Klasse wurde in JDK 1.0 eingeführt. Die Klasse StringBuffer gehört zum java.lang-Paket und wird vom generischen java.lang.object geerbt. Programmierer können es nicht weiter erweitern, da es sich um eine endgültige Klasse handelt. Die StringBuffer-Klasse implementiert Serializable-, Appendable- und CharSequience-Schnittstellen. Ein Objekt der Klasse StringBuffer kann eine Folge von Zeichen enth alten, die veränderbar und Thread-sicher ist. Das heißt, es ist einem String-Objekt sehr ähnlich, aber die Reihenfolge der Zeichen (Länge und Inh alt) kann jederzeit nach der Initialisierung des StringBuffer-Objekts geändert werden. Dies sollte jedoch mit den spezifischen Methoden erfolgen, die von der StringBuffer-Klasse bereitgestellt werden. Es gibt zwei Hauptoperationen in der StringBuffer-Klasse. Sie werden von den Methoden append() und insert() bereitgestellt. Diese Methoden sind überladen, sodass sie Daten jeden Typs wie Integer und Long akzeptieren können. Beide Methoden wandeln zunächst jede Eingabe in eine Zeichenfolge um und fügen dann die Zeichen der entsprechenden Zeichenfolge zum vorhandenen Stribbuffer-Objekt hinzu (hängen sie an oder fügen sie ein). Die append()-Methode fügt den konvertierten String am Ende des bestehenden StringBuffer-Objekts hinzu, während die insert()-Methode die Eingabezeichen an der angegebenen Einfügemarke hinzufügt.

Was ist StringBuilder?

StringBuilder-Klasse wurde in JDK 1.5 eingeführt. Die StringBuilder-API ist der StringBuffer-API sehr ähnlich. Tatsächlich wurde die StringBuilder-Klasse eigentlich als Ersatz für die StringBuffer-Klasse (für Single-Thread-Anwendungen) eingeführt. Die StringBuilder-Klasse gehört zum java.lang-Paket und wird vom generischen java.lang.object geerbt. Es ist eine letzte Klasse und kann daher von den Programmierern nicht erweitert werden. Die StringBuilder-Klasse implementiert Serializable-, Appendable- und CharSequience-Schnittstellen. Ein Objekt der Klasse StringBuilder kann eine Folge von Zeichen enth alten, die veränderlich, aber nicht Thread-sicher ist. Das heißt, es ist einem String-Objekt sehr ähnlich, aber der String kann jederzeit geändert werden. Die StringBuilder-Klasse bietet jedoch keine Synchronisierung und soll daher schneller sein als die Verwendung der StringBuffer-Klasse. Die StringBuilder-Klasse stellt append()- und insert()-Methoden mit genau ähnlicher Funktionalität wie die StringBuffer-Klasse bereit.

Was ist der Unterschied zwischen StringBuffer und StringBuilder?

Obwohl die Klassen StringBuilder und StringBuffer in Java für veränderliche Zeichenfolgen verwendet werden können, gibt es einen entscheidenden Unterschied. Im Gegensatz zur StringBuffer-Klasse ist die StringBuilder-Klasse nicht Thread-sicher und bietet keine Synchronisierung. Daher wird empfohlen, dass die StringBuilder-Klasse anstelle der StringBuffer-Klasse in Single-Thread-Anwendungen verwendet werden sollte, da behauptet wird, dass die StringBuilder-Klasse viel schneller als die StringBuffer-Klasse ist (unter normalen Umständen).

Empfohlen: