Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage
 <<    <     >    >>   API  Kapitel 12 - Strings

12.4 Die Klasse StringBuilder



Da Objekte des Typs String nicht dynamisch sind und String-Manipulationen immer zu neuen Kopien des Ursprungsobjekts führen, entwickelten die Java-Ingenieure eine Klasse, die die dynamische Verkettung von String-Objekten gestattet. Bereits im JDK 1.0 war hierfür die Klasse StringBuffer enthalten, die mit dem JDK 5 durch den StringBuilder abgelöst wurde. Beide können verwendet werden, um Zeichenketten zu manipulieren oder »Stück für Stück« zusammenzusetzen.

12.4.1 Konstruktoren

StringBuilder()

StringBuilder(String s)
java.lang.StringBuilder

Der parameterlose Konstruktor erzeugt einen leeren StringBuilder. Wird dagegen ein String übergeben, erzeugt der Konstruktor ein StringBuilder-Objekt, das eine Kopie der übergebenen Zeichenkette darstellt.

Die Klasse StringBuilder wurde mit Java 5 eingeführt, davor verwendete man die - immer noch in der Bibliothek vorhandene - Klasse StringBuffer. Beide besitzen die gleichen Methoden. Die Klasse StringBuilder ist eine Neuimplementierung der »alten« Klasse und arbeitet auf den meisten Plattformen schneller und ressourcenschonender. Dies hat sie vor allem dem Umstand zu verdanken, dass sie nicht für nebenläufige Zugriffe, wie sie in Kapitel 23 beschrieben werden, konzipiert ist. Solange wir also nicht mit mehreren Threads arbeiten, werden wir die Klasse StringBuilder verwenden.

12.4.2 Einfügen von Elementen

StringBuilder append(String s)

StringBuilder insert(int offset, String s)
java.lang.StringBuilder

Mit append wird der String s an das Ende des StringBuilder-Objekts angehängt. Zurückgegeben wird das auf diese Weise verlängerte StringBuilder-Objekt s. Zusätzlich gibt es die Methode append in Varianten für das Anhängen aller Arten von primitiven Typen. Anstelle eines String-Objekts wird hier der entsprechende primitive Typ übergeben, in einen String konvertiert und an das Ende des Objekts angehängt.

insert fügt den String s an der Position offset in den aktuellen StringBuilder ein. Zurückgegeben wird das auf diese Weise verlängerte StringBuilder-Objekt s. Auch diese Methode gibt es für primitive Typen. Der anstelle eines String übergebene Wert wird zunächst in einen String konvertiert und dann an der gewünschten Stelle eingefügt.

12.4.3 Löschen von Elementen

public StringBuilder deleteCharAt(int index)
public StringBuilder delete(int start, int end)
java.lang.StringBuilder

Mit deleteCharAt wird das an Position index stehende Zeichen entfernt und der StringBuilder um ein Zeichen verkürzt. delete entfernt den Teilstring, der von Position start bis end reicht, aus dem StringBuilder und verkürzt ihn um die entsprechende Anzahl Zeichen.

12.4.4 Verändern von Elementen

void setCharAt(int index, char c)
  throws StringIndexOutOfBoundsException

public StringBuilder replace(int start, int end, String str)
java.lang.StringBuilder

Mit der Methode setCharAt wird das an Position index stehende Zeichen durch das Zeichen c ersetzt. Falls der StringBuilder zu kurz ist (also index hinter das Ende des StringBuilder-Objekts zeigt), löst die Methode eine Ausnahme des Typs StringIndexOutOfBoundsException aus.

12.4.5 Längeninformationen

int length()

public int capacity()
java.lang.StringBuilder

length liefert die Länge des Objekts, also die Anzahl der Zeichen, die im StringBuilder enthalten sind. Mit capacity wird die Größe des belegten Pufferspeichers ermittelt. Dieser Wert ist typischerweise größer als der von length zurückgegebene Wert.

12.4.6 Konvertierung in einen String

String toString()
java.lang.StringBuilder

Nachdem die Konstruktion eines StringBuilder-Objekts abgeschlossen ist, kann es mit Hilfe dieser Methode effizient in einen String verwandelt werden. Die Methode legt dabei keine Kopie des StringBuilder-Objekts an, sondern liefert einen Zeiger auf den internen Zeichenpuffer. Erst wenn der StringBuilder erneut verändert werden soll, wird tatsächlich eine Kopie erzeugt.

Die sinnvolle Anwendung der Klassen String und StringBuilder hat bei vielen Programmen großen Einfluss auf ihr Laufzeitverhalten. In Kapitel 52 gehen wir daher noch einmal auf die speziellen Performance-Aspekte beider Klassen ein und geben Hinweise zu ihrer sinnvollen Anwendung.

 Hinweis 


 Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage, Addison Wesley, Version 7.0
 <<    <     >    >>   API  © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de