Java Reference
In-Depth Information
Der Vergleich in der
if
-Anweisung liefert hier
false
zurück, denn die beiden Bezeichner
verweisen auf unterschiedliche Objekte. Dabei spielt es keine Rolle, dass die beiden Brü-
che wertmäßig gleich sind.
Da sehr häufig der wertmäßige Vergleich benötigt wird, sollten Sie einem Objekt eine
Methode spendieren, die diesen wertmäßigen Vergleich vornimmt. Vordefinierte
Objekte bringen sehr häufig eine solche Methode mit dem Bezeichner
equals
mit. So z.
B. der Datentyp
String
, der nicht als primitiver Datentyp, sondern als Klasse definiert
ist. Ein Vergleich zweier Stringobjekte mit dem
==
-Operator liefert deshalb genau dann
true
, wenn es sich um ein- und dasselbe Objekt handelt, auf das zwei Bezeichner verwei-
sen. Ein Vergleich, der prüft, ob zwei unterschiedliche Stringobjekte den gleichen Text
speichern, ist durch Aufruf der Methode
equals
zu realisieren.
7
Stringa="DasisteinTest";
Stringb="DasisteinTest";
if (a.equals(b)) {
...
}
...
Listing 7.12
Wertmäßiger Vergleich zweier Stringobjekte
Die Schnittstelle einer
equals
-Methode ist eigentlich immer gleich. Sie liefert einen Boole-
schen Wert zurück und erwartet als Parameter ein Objekt der gleichen Klasse. Entspre-
chend können Sie eine
equals
-Methode für die Klasse
Bruch
definieren:
boolean equals(Bruch x) {
Brucha=newBruch(this.zaehler,this.nenner);
Bruchb=newBruch(x.zaehler,x.nenner);
a.kuerzen();
b.kuerzen();
if ((a.getZaehler()==b.getZaehler()) &&
(a.getNenner()==b.getNenner())) {
return true;
}else{
return false;
}
}
Listing 7.13
equals-Methode der Klasse »Bruch«