Alle drei implementieren die CharSequence-Schnittstelle, sodass CharSequence als String-Protokollschnittstelle betrachtet werden kann
1 Die String-Klasse ist eine unveränderliche Klasse, das heißt, sobald ein String-Objekt erstellt wird, bleibt der darin enthaltene Inhalt erhalten Dieses Objekt Die Zeichenfolge in ist unveränderlich, bis das Objekt zerstört wird.
Wenn wir häufig String str=new String("Define me");
str="Changed Me";
Die Ausgabe hat sich anscheinend geändert. Tatsächlich wurde die Ausrichtung von str geändert. Die ursprünglichen Objekte im Heap-Speicher sind zu Müll geworden2 🎜>StringBuffer stellt einen String mit einer variablen Zeichenfolge dar. Nachdem ein StringBuffer erstellt wurde, kann der String über die Methoden insert(), append(), reverse(), serChaAt() und setLength() geändert werden. Schließlich kann es nach der Generierung über die toString()-Methode
3 in ein String-Objekt umgewandelt werden. StringBuilder ist neu in JDK1.5 und stellt ebenfalls ein String-Objekt dar. Die Konstruktoren und Methoden von Die beiden Klassen sind auch grundsätzlich gleich, StringBuffer war zu diesem Zeitpunkt threadsicher und StringBulider implementierte keine Thread-Sicherheit, sodass die Leistung etwas höher war. Wenn Sie daher ein Zeichenfolgenobjekt mit variablen Zeichen erstellen, sollten Sie der StringBuilder-Klasse Vorrang geben
Vergleich
1 Die drei haben hinsichtlich der Ausführungsgeschwindigkeit die folgende Beziehung:
StringBuilder>StringBuffer> String;
2.: Erstens ist die Länge erweiterbar, zweitens ist StringBuffer threadsicher und StringBuilder ist threadunsicher. Wie werden ihre Längen dynamisch erweitert und wie wird die Thread-Sicherheit von StringBuffer implementiert?
Alle drei implementieren die CharSequence-Schnittstelle, sodass CharSequence als String-Protokollschnittstelle betrachtet werden kann
Alle Methoden in StringBuffer mit Ausnahme der Konstruktionsmethode sind durch synchronisiert begrenzt
Die beiden erweiterbaren Längen werden von secureCapacity(int MinimumCapacity) überprüft, um zu überprüfen, ob die aktuelle Länge kleiner als der Parameter MinimumCapacity ist. Wenn true, wird Speicherplatz zugewiesen. Die Schrittgröße für die Zuweisung neuen Speicherplatzes beträgt das Zweifache (aktuelle Länge + 1).
Das obige ist der detaillierte Inhalt vonEinführung in String, StringBuffer und StringBulider. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!