Java Reference
In-Depth Information
Die Lösung besteht darin, dass die Variable a an einer anderen Position im Arbeitsspei-
cher völlig neu angelegt und mit der verlängerten Zeichenkette initialisiert wird.
Abbil-
dung 8.4
zeigt, dass die ursprüngliche Variable a zerstört und der Arbeitsspeicher dort
freigegeben wird.
Dieses Verhalten ist deshalb von Bedeutung, weil der Vorgang des Anlegens von Objek-
ten einen durchaus aufwändigen Vorgang darstellt. Bei gelegentlichen Veränderungen
an Strings wird sich das nicht großartig auswirken. Wenn Sie aber Programme schrei-
ben, die in Wiederholungsstrukturen ständig eine große Zahl von Stringinhalten verän-
dern, dann wird das Programm keine Geschwindigkeitsrekorde brechen. Für diesen Fall
stellt Java andere Klassen, wie z. B.
StringBuffer
, zur Verarbeitung von Zeichenketten
zur Verfügung. Die Klasse
String
ist zwar die naheliegendste, keinesfalls aber die einzige
Klasse, die für die Zeichenkettenverarbeitung zur Verfügung steht.
8.1.3 Stringlänge bestimmen und Strings vergleichen
Die aktuelle Länge eines Strings können Sie mit der Methode
length
bestimmen. Die
Schnittstelle lautet:
public int length()
Die Methode erwartet eine leere Parameterliste und liefert als Ergebnis einen
Integer
-
Wert zurück. Mit der Anweisung
System.out.print(a.length);
können Sie in der Konsole z. B. die aktuelle Länge der Variablen
a
ausgeben. Beachten Sie
hierbei, dass natürlich auch Leerstellen Zeichen sind und entsprechend mitgezählt wer-
den.
Die Problematik beim Vergleichen von Objekten habe ich bereits ausführlich in
Abschnitt 7.3.2
, »Objekte vergleichen«, angesprochen. Konsequenterweise verfügt die
Klasse
String
über eine geerbte Methode
equals
mit folgender Schnittstelle:
public boolean equals(Object anObject)
Die Methode liefert einen Wahrheitswert zurück, der Auskunft über Gleichheit oder
Ungleichheit gibt. Es wird Sie vielleicht verwundern, dass als Parameter nicht
String
,
sondern
Object
verwendet wird. Die Klasse
Object
ist gewissermaßen der Vorfahre aller
Klassen, die in Java definiert werden. Diese Klasse vererbt einige Methoden an alle Klas-