Lassen Sie uns die folgende String -Verkettung analysieren.
1. STRING
Öffnen Sie den Quellcode der Zeichenfolge, wie in der Abbildung gezeigt
Sie werden feststellen, dass der Zeichenwert, der die Zeichenfolge speichert, eine endgültige Konstante ist. In Anbetracht der Konstruktionsmethode der String stellten wir fest, dass der Wert der Zeichenfolge durch die Konstruktionsmethode bestimmt wird. Es ist notwendig, das endgültige Schlüsselwort hier zu erklären
Das durch die endgültige geänderte Attribut ist eine Konstante (der Wert kann nicht geändert werden). Es wird entweder einen Wert zugewiesen, während er ihn deklariert hat, oder einen Wert in der Konstruktionsmethode. Sobald es zugewiesen wurde, kann es nicht geändert werden.
Daher verwenden Sie String zum Implementieren von String -Stichen. Da der Wert der Zeichenfolge nicht geändert werden kann, muss für jede Stiche eine neue Zeichenfolge generiert werden, um eine neue Zeichenfolge zu speichern. Daher hat die Verwendung von String, um String -Stiche zu verarbeiten, eine sehr geringe Leistung.
Weitere Informationen zu String finden Sie im Blog: http://longpo.iteye.com/blog/2199493
2. STRINGBUFFER
Die StringBuffer -Klasse erbt die AbstractStringBuilder -Klasse der abstrakten Klasse und öffnet den AbstractStringBuilder -Quellcode.
Schauen wir uns die drei Überlastungsmethoden an
Es wurde festgestellt, dass alle Konstrukteure der Elternklasse AbstractStringBuilder genannt werden.
Es wurde festgestellt, dass das Char -Array, in dem der StringBuffer -Daten keine endgültige Art ist, was bedeutet, dass es geändert werden kann und die konstruierten Saiten immer noch freien Raum haben, um die Saiten zu spleißen.
In StringBuffer verwenden wir die Funktion append (), um Zeichenfolgen zu spleißen. Wir können denken, dass es zwar noch im Char -Array noch übrig ist, es definitiv nicht ausreicht, um es die ganze Zeit zu spleißen. Daher ist es notwendig, die Quellcode -Implementierung der Anhangsfunktion zu betrachten.
Schauen Sie sich die Append -Methode seiner übergeordneten Klasse zum AbstractStringBuilder an
Wenn das Wert -Array nicht in der Lage ist, ausreichend Kapazität zu sein, wird ein neues Wert -Array erstellt, um die Zeichenfolge zu speichern. Zu diesem Zeitpunkt sollten Sie das Prinzip des StringBuffer -String -Spleißens verstehen. Wenn das Char -Value -Array nicht ausreicht, wird ein größeres Kapazitätsarray zum Speichern erstellt. Die Effizienz ist signifikant höher als die von String.
3.Stringbuilder
StringBuilder und StringBuffer sind zwei Brüder, und ihre Verwendung ist im Grunde genommen derselbe. Der Unterschied besteht darin, dass StringBuffer synchronisiert und thread-sicher ist, während StringBuilder nicht die Synchronisation und den Thread-sicher garantiert.
StringBuilder ist in den meisten Implementierungen schneller als StringBuffer, und wenn auf String -Puffer von einem einzelnen Thread zugegriffen werden, wird empfohlen, zuerst StringBuilder zu verwenden.
Das obige ist die vom Editor eingeführte Java -String -Wahl. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!