String ist kein einfacher Typ, sondern eine Klasse, die verwendet wird, um eine Abfolge von Zeichen darzustellen. Die Charaktere selbst entsprechen den Unicode -Standards, und es gibt zwei Möglichkeiten, sie zu initialisieren.
Zum Beispiel: String Begrüßung = "Guten Morgen! /N";
String Begrüßung = new String (= "Guten Morgen! /N");
Das Merkmal der Zeichenfolge ist, dass das Zeichenobjekt, auf das er verweist, nicht geändert werden kann.
StringBuffer ist ein String -Objekt mit den Eigenschaften der Übergabe von Objektreferenzen.
Das StringBuffer -Objekt kann seine Methoden aufrufen, um Vorgänge dynamisch zu erhöhen, einzufügen, zu modifizieren und zu löschen, und muss die Größe nicht wie ein Array im Voraus angeben, um die Auswirkung des Einsetzens von Zeichen mehrmals zu erreichen und gleichzeitig herauszunehmen Es ist also sehr flexibel und bequem, Saiten zu betreiben.
Sobald die endgültige gewünschte Zeichenfolge über StringBuffer erzeugt wird, kann er als ToString -Methode bezeichnet werden, um sie in ein String -Objekt umzuwandeln.
Die Position dieser beiden Klassen in der Stringverarbeitung ist selbstverständlich. Erklären wir es aus den folgenden Punkten
1. Vergleich der beiden in Bezug auf die Ausführungsgeschwindigkeit: StringBuffer> String
2. STRING <StringBuffer Reason String: String Constant StringBuffer: Zeichenerstellungsvariable aus dem obigen Namen, String ist eine "Zeichenerstellungskonstante", dh ein unveränderliches Objekt. Möglicherweise haben Sie eine Frage zum Verständnis dieses Satzes, wie zum Beispiel diesen Code:
String S = "ABCD";
Wir haben offensichtlich die String -Variable S geändert, warum hat es sich nicht geändert, dass dies eine Art Betrug ist. Ein Objekt S wird verwendet, um die zweite Codezeile auszuführen, was bedeutet, dass sich das Objekt S vorher nicht geändert hat. Wir sagen, dass der String -Typ ein unveränderliches Objekt ist. Tatsächlich werden ständig neue Objekte erstellt, und die ursprünglichen Objekte werden von GC gesammelt.
Aber StringBuffers sind unterschiedlich. Geschwindigkeit wird schneller sein
3. Ein besonderes Beispiel:
Die Codekopie lautet wie folgt:
String str = "Dies ist nur ein" + "einfach" + "Test";
StringBuffer builder = new StringBuilder ("Dies ist nur ein"). Append ("einfach"). Append ("test");
Sie werden überrascht sein, dass die Geschwindigkeit der Erzeugung von STR -Objekten einfach zu schnell ist, und zu diesem Zeitpunkt hat StringBuffer überhaupt keinen Vorteil in der Geschwindigkeit. Tatsächlich ist dies ein Trick der JVM in der Tat:
String str = "Dies ist nur ein" + "einfach" + "Test";
Eigentlich:
String str = "Dies ist nur ein einfacher Test";
Es dauert also nicht viel Zeit. Aber was Sie hier beachten sollten, ist, dass die Geschwindigkeit beispielsweise nicht so schnell ist, wenn Ihre Zeichenfolge aus einem anderen String -Objekt stammt:
String str2 = "Dies ist nur ein" String Str3 = "Simple";
Zu diesem Zeitpunkt wird das JVM dies auf die ursprüngliche Weise regelmäßig tun.
4.StringBuilder und StringBuffer
StringBuilder: StringBuffer, der nicht sicher ist: Thread-Safe Wenn wir von mehreren Threads im String-Puffer verwendet werden, kann der JVM nicht garantieren, dass der Betrieb von StringBuilder sicher ist. . von. Natürlich arbeiten wir in den meisten Fällen unter einem einzigen Thread, sodass in den meisten Fällen StringBuilder anstelle von StringBuffer verwendet wird, was der Grund für die Geschwindigkeit ist.
Zusammenfassung der Verwendung der drei:
1. Wenn Sie eine kleine Datenmenge betreiben möchten, verwenden Sie = String = String
2. Betreiben Sie eine große Datenmenge in einem einzelnen Thread -String -Puffer = StringBuilder
3. Betreiben