Heim > Java > JavaErste Schritte > Hauptteil

Eine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder

青灯夜游
Freigeben: 2019-11-27 17:15:54
nach vorne
1800 Leute haben es durchsucht

In Java-Entwicklungsinterviews werden wir oft nach den Unterschieden zwischen String, StringBuider und StringBuffer gefragt. Viele Leute antworten nicht umfassend und ausführlich genug. Was sind also die Unterschiede zwischen ihnen?

Eine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder

Alle drei werden zum Betreiben von Zeichenfolgen verwendet. String wird normalerweise zum Definieren einer Variablen verwendet, während StringBuilder StringBuffer normalerweise zum Verbinden von Zeichenfolgen und anderen Operationen verwendet wird. Tatsächlich kann String jedoch auch zum Verbinden von Zeichenfolgen verwendet werden. Warum verwenden wir ihn jedoch selten? Beginnen wir mit den zugrunde liegenden Codes der drei.

Eine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder

Der zugrunde liegende Code von String ist ein mit final modifiziertes char-Array, was bedeutet, dass nach der Definition einer String-Variablen der Inhalt der Variablen unveränderlich ist.

Eine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder

Eine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder

Eine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder

Sowohl StringBuilder als auch StringBuffer erben von AbstractStringBuilder, das Char-Array dieser Klasse jedoch nicht Verwenden Sie die endgültige Änderung. Der Inhalt ist variabel. Was bedeutet das?

Zum Beispiel:

String s1= "a";
String s2 = new String("b") ;
String s3 = s1+s2;
Nach dem Login kopieren

Wenn ja, erhalten wir die Zeichenfolge „ab“, da am Ende von String keine unveränderliche Zeichenfolge vorhanden ist, sodass drei Objekte erstellt werden, die alle erstellt werden belegen Speicher und dies Die drei Objekte haben nie Referenzen verloren, sodass die JVM nicht durch Müll gesammelt werden kann, was zu einer großen Verschwendung von Speicherressourcen führt. Dies wird in unserer Entwicklung nicht empfohlen, aber StringBuilder und StringBuffer haben kein solches Problem.

Eine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder

Eine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder

Eine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder

Durch den zugrunde liegenden Code können wir erkennen, dass StringBuilder und StringBuffer beim Spleißen von Zeichenfolgen verwendet werden. Bestimmen Sie, ob die Länge der Zeichenfolge ausreicht, und erstellen Sie ein neues Array, um die Daten zu kapseln, während das ursprüngliche Objekt die Referenz aufgibt und auf die Speicherbereinigung wartet, wodurch die Speicherverschwendung verringert wird. Daher verwenden wir normalerweise beim Spleißen von Zeichenfolgen Verwenden Sie StringBuilder und StringBuffer, aber die Ausführungseffizienz der beiden ist unterschiedlich. Warum ist das so?

Eine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder

Eine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder

Durch den zugrunde liegenden Quellcode können Sie feststellen, dass StringBuffer beim Spleißen von Zeichenfolgen Synchronisationssperren verwendet, was die Sicherheit verbessert, StringBuilder jedoch nicht Verwenden Sie es. Synchronisierungssperre, damit die Effizienz verbessert wird.

Jetzt sollten Sie die Unterschiede zwischen den dreien verstehen! !

Dieser Artikel stammt aus der Rubrik Java-Einführung, willkommen zum Lernen!

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über die Unterschiede zwischen String, StringBuffer und StringBuilder. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:源码时代
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage