Wenn Sie Zeichenfolgen ändern, müssen Sie die Klassen StringBuffer und StringBuilder verwenden.
Im Gegensatz zur String-Klasse können Objekte der StringBuffer- und StringBuilder-Klassen mehrmals geändert werden, ohne dass neue unbenutzte Objekte erstellt werden.
Die StringBuilder-Klasse wurde in Java 5 vorgeschlagen. Der größte Unterschied zwischen ihr und StringBuffer ist StringBuilder Die Methode ist nicht Thread-sicher (Thread-Sicherheit bedeutet, dass beim Multithread-Zugriff ein Sperrmechanismus verwendet wird. Wenn ein Thread auf bestimmte Daten dieser Klasse zugreift, ist er geschützt und andere Threads können nicht darauf zugreifen, bis der Thread mit dem Lesen fertig ist. Andere Threads Es kann keine Dateninkonsistenz oder Datenverschmutzung auftreten. Thread unsicher bedeutet, dass kein Datenzugriffsschutz bereitgestellt wird und es möglich ist, dass mehrere Threads die Daten nacheinander ändern und die resultierenden Daten schmutzige Daten sind.
Da StringBuilder gegenüber StringBuffer einen Geschwindigkeitsvorteil hat, empfiehlt es sich in den meisten Fällen, die Klasse StringBuilder zu verwenden. Wenn die Anwendung jedoch Thread-Sicherheit erfordert, muss die StringBuffer-Klasse verwendet werden.
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer(" test"); sBuffer.append(" String Buffer"); System.out.println(sBuffer); } }
Die Kompilierungs- und Ausführungsergebnisse des obigen Beispiels lauten wie folgt:
test String Buffer
Im Folgenden sind die wichtigsten Methoden aufgeführt, die von der StringBuffer-Klasse unterstützt werden:
Seriennummer | Methodenbeschreibung |
---|---|
1 | public StringBuffer append(String s) Hängt die angegebene Zeichenfolge an diese Zeichenfolge an. |
2 | public StringBuffer reverse() Ersetzt diese Zeichenfolge durch ihre umgekehrte Form. |
3 | public delete(int start, int end) Entfernt Zeichen aus einem Teilstring dieser Sequenz. |
4 | public insert(int offset, int i) Fügt die String-Darstellung des int -Arguments in diese Sequenz ein. |
5 | replace(int start, int end, String str) Ersetzt die Zeichen in einem Teilstring dieser Sequenz durch die Zeichen im angegebenen String . |
Die Methoden in der folgenden Liste ähneln denen der String-Klasse:
Seriennummer | Methodenbeschreibung |
1 | int Capacity() gibt die aktuelle Kapazität zurück. |
2 | char charAt(int index) Gibt den char Wert am angegebenen Index in dieser Sequenz zurück. |
3 | void secureCapacity(int minimumCapacity) Stellt sicher, dass die Kapazität mindestens dem angegebenen Minimum entspricht. |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) Kopiert Zeichen aus dieser Sequenz in das Zielzeichenarray dst . |
5 | int indexOf(String str) Gibt den Index des ersten Vorkommens des angegebenen Teilstrings im String zurück. |
6 | int indexOf(String str, int fromIndex) Gibt ab dem angegebenen Index den Index des ersten Vorkommens des angegebenen Teilstrings im String zurück. |
7 | int lastIndexOf(String str) Gibt den Index in dieser Zeichenfolge des ganz rechten Vorkommens der angegebenen Teilzeichenfolge zurück. |
8 | int lastIndexOf(String str, int fromIndex) Gibt den Index in dieser Zeichenfolge des letzten Vorkommens der angegebenen Teilzeichenfolge zurück. |
9 | int length() gibt die Länge in Zeichen zurück. |
10 | void setCharAt(int index, char ch) Setzt das Zeichen am angegebenen Index auf ch . |
11 | void setLength(int newLength) Legt die Länge der Zeichenfolge fest. |
12 | CharSequence subSequence(int start, int end) Gibt eine neue Zeichenfolge zurück, die eine Teilsequenz dieser Sequenz ist. |
13 | String substring(int start) Gibt einen neuen String zurück, der die Zeichenteilsequenz enthält, die derzeit in dieser Zeichenfolge enthalten ist. |
14 | String substring(int start, int end) Gibt einen neuen String zurück, der die Teilsequenz von Zeichen enthält, die derzeit in dieser Sequenz enthalten sind. |
15 | String toString() Gibt die String-Darstellung der Daten in dieser Sequenz zurück. |