Java Reference
In-Depth Information
sen. Die Methode equals ist eine dieser Methoden, über die jede Klasse verfügt. Sie muss
durch Überschreiben an die jeweiligen Bedingungen der neuen Klasse angepasst wer-
den.
Diese Tatsache hat zur Folge, dass der Methode nicht nur ein String, sondern jedes belie-
bige andere Objekt übergeben werden kann, ohne dass der Compiler eine Fehlermel-
dung erzeugt. Ein Vergleich kann aber immer nur mit dem Ergebnis true enden, wenn
das übergebene Objekt ein Stringobjekt ist und die darin abgelegte Zeichenkette iden-
tisch mit der des aufrufenden Stringobjekts ist. Der Vergleich in der if -Anweisung
if (a.equals(b)) ...
8
wird im Programmbeispiel von oben entsprechend false zurückliefern.
Die Methode equals kann nur auf absolute Gleichheit prüfen. Sie wollen in vielen Fällen
aber auch wissen, ob ein String nach einem lexikalischen Vergleich vor oder hinter dem
Vergleichsstring einzuordnen ist. Für diesen Vergleich bringt die Klasse String die
Methode compareTo mit. Die Schnittstelle lautet:
public int compareTo(String anotherString)
Sie ist nicht ererbt und erwartet deshalb einen String als Argument und liefert eine
ganze Zahl zurück, die beschreibt, ob der String vor oder hinter dem Argument einzu-
ordnen ist. Ein negatives Ergebnis bedeutet, dass der String vor dem übergebenen Argu-
ment einzuordnen ist. Der String ist gewissermaßen kleiner als der übergebene String.
Bei einem Ergebnis größer als 0 ist der String hinter dem übergebenen String einzuord-
nen, und wenn das Ergebnis 0 ist, dann sind die beiden Strings exakt gleich. Bei diesem
lexikalischen Vergleich wird entsprechend der Unicode-Tabelle verglichen.
Ein Zeichen, das einen numerisch kleineren Unicode besitzt, ist entsprechend vor
einem Zeichen einzuordnen, das einen größeren Code besitzt. Es wird Zeichen für Zei-
chen der beiden Strings verglichen, bis die erste Abweichung der Zeichen eine Ungleich-
heit ergibt, die dann über das Ergebnis entscheidet. Die Anweisung
System.out.println(a.compareTo(b));
gibt an der Konsole den Wert -33 aus. Das bedeutet zunächst, dass der String a lexika-
lisch vor dem String b eingeordnet wird. Bereits das erste Zeichen ( 'D' und 'e' ) ent-
scheidet hier über das Ergebnis, weil die Großbuchstaben im Unicode (wie in anderen
Codetabellen auch) vor den Kleinbuchstaben angeordnet sind. Der Wert -33 ergibt sich
aus der Differenz des Unicodes von 'D' (68) und 'e' (101).
Search WWH ::




Custom Search