„Grüße, Amigo!“

„Hallo, Rishi!“

„Sie wissen jetzt genug über Strings, um etwas Interessantes zu lernen. Genauer gesagt, eine neue Klasse, die der String-Klasse ähnelt, aber nicht genau mit ihr übereinstimmt.“

„Klingt faszinierend, obwohl mir nicht ganz klar ist, warum gewöhnliche Strings zu kurz kommen und warum andere stringähnliche Klassen benötigt werden.“

„Beginnen wir mit der Tatsache, dass Strings in Java unveränderliche Objekte sind.“

„Wie ist das? Ich habe es vergessen... Oder ich wusste es gar nicht erst...“

„Ich möchte Sie daran erinnern, dass unveränderliche Objekte solche sind, deren Zustand nach ihrer Erstellung nicht geändert werden kann.“

„Ahhh... Warum sind Strings in Java unveränderlich?“

„Dies wurde getan, um die String-Klasse stark zu optimieren und ihre Verwendung überall zu ermöglichen. Beispielsweise werden nur unveränderliche Typen für die Verwendung als Schlüssel in der HashMap-Sammlung empfohlen .

„Allerdings kommt es oft vor, dass Programmierer es bequemer fänden, wenn die String-Klasse veränderbar wäre. Sie wollen eine Klasse, die nicht jedes Mal einen neuen Teilstring erstellt, wenn eine ihrer Methoden aufgerufen wird.“

„Aber wofür ist es gut?“

„Angenommen, wir haben einen sehr großen String und müssen am Ende häufig etwas hinzufügen. In diesem Fall ArrayList<Character>kann sogar eine Sammlung von Zeichen ( ) effizienter sein, als String-Objekte ständig neu zu erstellen und zu verketten.“

„Und deshalb brauchen wir Strings, die nicht ganz der String-Klasse entsprechen?“

„Genau. Die Java-Sprache hat einen String-ähnlichen Typ hinzugefügt, der geändert werden kann. Er heißt StringBuilder„.

Ein Objekt erstellen

„Um ein StringBuilderObjekt basierend auf einer vorhandenen Zeichenfolge zu erstellen, müssen Sie eine Anweisung wie die folgende ausführen:

StringBuilder name = new StringBuilder(string);

„Um eine leere veränderbare Zeichenfolge zu erstellen, müssen Sie eine Anweisung wie diese verwenden:

StringBuilder name = new StringBuilder();

Liste der Methoden

„Die StringBuilderKlasse verfügt über zwei Dutzend hilfreiche Methoden. Hier sind die wichtigsten:

Methode Beschreibung
StringBuilder append(obj)
Konvertiert das übergebene Objekt in einen String und hängt ihn an den aktuellen String an
StringBuilder insert(int index, obj)
Konvertiert das übergebene Objekt in einen String und fügt es in der Mitte des aktuellen Strings ein
StringBuilder replace(int start, int end, String str)
Ersetzt den durch das Start-.Endintervall angegebenen Teil der Zeichenfolge durch die übergebene Zeichenfolge
StringBuilder deleteCharAt(int index)
Entfernt das Zeichen mit dem angegebenen Index aus der Zeichenfolge
StringBuilder delete(int start, int end)
Entfernt Zeichen innerhalb des angegebenen Intervalls aus der Zeichenfolge
int indexOf(String str, int index)
Sucht nach einem Teilstring im aktuellen String
int lastIndexOf(String str, int index)
Sucht nach einem Teilstring im aktuellen String, beginnend am Ende
char charAt(int index)
Gibt das Zeichen in der Zeichenfolge am übergebenen Index zurück
String substring(int start, int end)
Gibt die durch das angegebene Intervall definierte Teilzeichenfolge zurück
StringBuilder reverse()
Kehrt die aktuelle Zeichenfolge um.
void setCharAt(int index, char)
Ändert das Zeichen am angegebenen Index in das übergebene Zeichen
int length()
Gibt die Länge der Zeichenfolge in Zeichen zurück

„Und jetzt werde ich Ihnen jede dieser Methoden kurz beschreiben.

Anhängen an eine Zeichenfolge

StringBuilder„Um einer veränderlichen Zeichenfolge ( ) etwas hinzuzufügen , verwenden Sie die append()Methode. Beispiel:

Code Beschreibung
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Konvertieren in eine Standardzeichenfolge

„Um ein StringBuilderObjekt in ein String-Objekt umzuwandeln, müssen Sie nur seine Methode aufrufen toString(). Beispiel

Code Ausgang
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Wie lösche ich einen Charakter?

„Um ein Zeichen in einer veränderlichen Zeichenfolge zu löschen, müssen Sie die Methode verwenden deleteCharAt(). Beispiel:

Code Ausgang
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Wie ersetze ich einen Teil einer Zeichenfolge durch eine andere Zeichenfolge?

„Dafür gibt es die replace(int begin, int end, String str)Methode. Beispiel:

Code Ausgang
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w

„Klingt praktisch. Danke, Rishi.“

„Erwähnen Sie es nicht. Wie wäre es damit: Kann man eine Saite rückwärts drehen? Wie würden Sie das machen?“

„Nun... ich würde eine erstellen StringBuilder, eine Zeichenfolge darin einfügen... Dann eine neue Zeichenfolge erstellen und in einer Schleife vom letzten Zeichen zum ersten... Oder vielleicht eine bitweise Verschiebung...

„Nicht schlecht. Aber es könnte schneller sein. Dafür gibt es eine spezielle Methode – reverse();Beispiel:

Code Ausgang
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

„Neben der StringBuilderKlasse gibt es in Java noch eine weitere stringartige Klasse namens StringBuffer. Sie ist ein Analogon der StringBuilderKlasse, aber ihre Methoden sind mit dem Modifikator gekennzeichnet synchronized.“

"Was bedeutet das?"

„Das bedeutet, dass StringBuffervon mehreren Threads gleichzeitig auf das Objekt zugegriffen werden kann.“

„Ich kenne mich mit Threads noch nicht so gut aus. Aber ‚Zugriff von mehreren Threads aus möglich‘ ist eindeutig besser als ‚Zugriff von mehreren Threads nicht möglich‘ … Warum dann nicht immer verwenden? StringBuffer

„Weil es viel langsamer ist als StringBuilder. Möglicherweise benötigen Sie eine solche Klasse, wenn Sie beginnen, Multithreading in der Java-Multithreading- Quest aktiv zu erkunden.

„Das werde ich mir ins Gedächtnis schreiben, damit ich es nicht vergesse. Mit der Aufschrift ‚für die Zukunft‘ versehen.“