In Java werden String, StringBuffer und StringBuilder häufig in der Programmierung Streichelklassen verwendet. Der Unterschied zwischen ihnen ist auch eine Frage, die in Interviews häufig gestellt wird. Fassen Sie nun zusammen und sehen Sie, wie unterschiedlich und gleich sind.
1. variabel und unveränderlich
Die String -Klasse verwendet ein Zeichenarray, um Zeichenfolgen wie folgt zu speichern: Da es einen "endgültigen" Modifikator gibt, können Sie wissen, dass String -Objekte unveränderlich sind.
privater endgültiger Charwert [];
Sowohl StringBuilder als auch StringBuffer werden von der AbstractStringBuilder -Klasse geerbt. In AbstractStringBuilder werden Zeichenarrays verwendet, um Saiten zu retten. Wie folgt ist ersichtlich, dass beide Objekte veränderlich sind.
char [] Wert;
2. Ist es Multi-Threaded und sicher
Objekte in der Zeichenfolge sind unveränderlich, sodass sie als Konstanten verstanden werden können, die offensichtlich fadensicher sind.
AbstractStringBuilder ist eine öffentliche übergeordnete Klasse von StringBuilder und StringBuffer, die einige grundlegende Operationen von Zeichenfolgen wie Expansion, Anhängen, Einfügen, Indexof und andere öffentliche Methoden definiert.
StringBuffer hat der Methode oder einer Synchronisationsschloss der aufgerufenen Methode eine Synchronisationsschloss hinzugefügt, sodass es thread-sicher ist. Siehe den folgenden Quellcode:
public synchronisierte StringBuffer Reverse () {Super.Reverse (); return this;} public int indexOf (string str) {return indexof (str, 0); // Es gibt eine öffentliche synchronisierte intindexof (string str, int ausIdex) Methode}StringBuilder fügt der Methode keine Synchronisierungssperrungen hinzu und ist daher nicht sicher.
3.. StringBuilder und StringBuffer gemeinsam
StringBuilder und StringBuffer haben öffentliche Elternklassen AbstractStringBuilder ( Abstract Class ).
Einer der Unterschiede zwischen abstrakten Klassen und Schnittstellen besteht darin, dass einige öffentliche Methoden der Unterklassen in abstrakten Klassen definiert werden können. Unterklassen müssen nur neue Funktionen hinzufügen und die vorhandenen Methoden nicht wiederholen. während Schnittstellen nur Methoden und Konstanten definieren.
Die Methoden von StringBuilder und StringBuffer rufen in AbstractStringBuilder wie Super.Append (...) öffentliche Methoden auf. Es ist nur so, dass StringBuffer der Methode synchronisiertes Schlüsselwort hinzufügt und es synchronisiert.
Wenn das Programm nicht multi-thread ist, ist die Verwendung von StringBuilder effizienter als StringBuffer.
Die obige Artikel-Depth-Analyse der Unterschiede zwischen String, StringBuffer und StringBuilder in Java ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.