Primitive und Klassentypen
Wir vergleichen die Werte zweier Instanzen der Klassen Integer
und Long
:
Code | Ergebnis |
---|---|
|
Wertvergleich |
Der Methode equals()
zur Prüfung auf Wertgleichheit bei Instanzen entspricht der Operator
»==
« bei primitiven Datentypen:
Code | Ergebnis |
---|---|
|
Wertvergleich int mit long: true |
Erklären Sie dieses unterschiedliche Ergebnis true
vs. false
.
Hinweis: Wie wird die equals()
Methode in Bezug auf Instanzen »fremder« Klassen implementiert? Was
bewirken die Zuweisungen?
Lösung
Die beiden Objekte x
vom Typ
Integer
und y
vom Typ Long
repräsentieren den identischen Wert 44. Es sind aber Instanzen
verschiedener Klassen.
Die Überschreibung der equals(...)
Methode prüft zunächst, ob die beiden beteiligten Instanzen zur selben
Klasse gehören, wie z.B. in Rectangle
.equals(..)
.
Da x
und y
zu verschiedenen Klassen gehören, liefert x.equals(y)
unabhängig vom repräsentierten Wert
stets false
.