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«
Search WWH ::




Custom Search