Zeichenfolge Konstante
StringBuffer String Variable (Thread sicher)
StringBuilder String Variable (nicht thread sicher)
Um einfach auszudrücken, ist der Hauptleistungspflicht zwischen String -Typ und StringBuffer -Typ tatsächlich, dass String ein unveränderliches Objekt ist. Jedes Mal, wenn Sie den String -Typ ändern, ist es daher gleichbedeutend mit der Erzeugung eines neuen String -Objekts und dem Zeiger auf ein neues String -Objekt. Daher ist es am besten, Zeichenfolge für Zeichenfolgen, die häufig den Inhalt zu ändern, nicht zu verwenden, da jedes Mal, wenn das Objekt generiert wird, einen Einfluss auf die Systemleistung hat. Vor allem, wenn zu viele referenzierte Objekte im Speicher sind, wird der GC des JVM arbeiten, was definitiv ziemlich langsam sein wird.
Wenn Sie die StringBuffer -Klasse verwenden, ist das Ergebnis unterschiedlich. Jedes Mal, wenn das Ergebnis auf dem StringBuffer -Objekt selbst funktioniert, anstatt ein neues Objekt zu generieren und dann die Objektreferenz zu ändern. Daher empfehlen wir im Allgemeinen die Verwendung von StringBuffer, insbesondere wenn String -Objekte häufig geändert werden. In einigen besonderen Fällen wird das String -Spleißen von String -Objekten tatsächlich von der JVM als Spleißen von StringBuffer -Objekten interpretiert. Daher ist die Geschwindigkeit von String -Objekten zu diesen Zeiten nicht langsamer als StringBuffer -Objekte. Insbesondere in den folgenden String -Objektengenerierung ist die String -Effizienz viel schneller als StringBuffer:
String S1 = "Dies ist nur ein" + "einfach" + "Test";
StringBuffer sb = new StringBuilder ("Dies ist nur ein"). Append ("einfach"). Append ("test");
Sie werden überrascht sein, dass die Geschwindigkeit der Erzeugung von String S1 -Objekten einfach zu schnell ist, und zu diesem Zeitpunkt hat StringBuffer keinen Vorteil in der Geschwindigkeit. Tatsächlich ist dies ein Trick des JVM. In den Augen des JVM, das
String S1 = "Dies ist nur ein" + "einfach" + "Test"; in der Tat ist es:
String S1 = "Dies ist nur ein einfacher Test"; Natürlich dauert es nicht zu viel Zeit. Aber was Sie hier beachten sollten, ist, dass wenn Ihre Zeichenfolge von einem anderen stammt
Für String -Objekte ist die Geschwindigkeit beispielsweise nicht so schnell:
String S2 = "Dies ist nur ein";
String S3 = "Simple";
String S4 = "Test";
String S1 = S2 + S3 + S4;
Zu diesem Zeitpunkt wird das JVM dies auf die ursprüngliche Weise regelmäßig tun
In den meisten Fällen StringBuffer> String
StringBuffer
Java.lang.StringBuffer-Thread-safe mutable Zeichensequenz. Ein String-ähnlicher String-Puffer, kann aber nicht geändert werden. Obwohl es zu jedem Zeitpunkt eine bestimmte Reihenfolge von Zeichen enthält, können die Länge und der Inhalt der Sequenz durch einige Methodenaufrufe geändert werden.
Stringpuffer können sicher für mehrere Threads verwendet werden. Diese Methoden können bei Bedarf synchronisiert werden, sodass alle Vorgänge in einer bestimmten Instanz in einer seriellen Reihenfolge auftreten, die mit der Reihenfolge der Methodenaufrufe übereinstimmt, die von jedem beteiligten Thread erstellt wurden.
Die Hauptvorgänge auf StringBuffer sind die Anhang- und Einfügungsmethoden, die überladen werden können, um alle Datenart zu akzeptieren. Jede Methode kann die angegebenen Daten effektiv in eine Zeichenfolge umwandeln und dann die Zeichen dieser Zeichenfolge in den String -Puffer anhängen oder einfügen. Die Anhangsmethode fügt diese Zeichen immer zum Ende des Puffers hinzu. Die Methode Einfügen fügt Zeichen am angegebenen Punkt hinzu.
Wenn sich Z auf ein String -Puffer -Objekt bezieht, dessen aktueller Inhalt "Start" ist, ruft diese Methode Z.Append ("LE") den String -Puffer "erschreckend" auf, und Z.Insert (4, "LE") ändert den String -Puffer in "Stern".
In den meisten Fällen StringBuilder> StringBuffer
Java.lang.Stringbuilde
Java.lang.StringBuilder Eine variable Zeichensequenz ist in 5.0 neu. Diese Klasse bietet eine StringBuffer-kompatible API, ist jedoch nicht garantiert synchronisiert. Diese Klasse ist als einfacher Ersatz für StringBuffer ausgelegt, wenn String -Puffer von einem einzelnen Thread verwendet werden (dies ist üblich). Wenn möglich, wird empfohlen, diese Klasse zuerst einzunehmen, da sie in den meisten Implementierungen schneller als StringBuffer ist. Die Methoden von beiden sind im Grunde gleich.
Das obige ist eine Zusammenstellung der Informationen zu Java String, StringBuffer und StringBuilder. Wir werden in Zukunft weiterhin relevante Informationen hinzufügen. Vielen Dank für Ihre Unterstützung für diese Website!