Martin240
Ensign
- Registriert
- Mai 2007
- Beiträge
- 149
An der Stelle macht es keinen Unterschied, da der Datentyp Integer ist und der ist bekanntlich ein primitiver Datentyp. In beiden Fällen würde der Compiler meines Wissens nach erst die int-Werte aus der Wrapper-Klasse unboxen und dann den Vergleich zwischen den int-Werten machen. Ein Integer ist ja nichts anderes als ein "verpackter" int-Wert. Es kommt also aufs selbe raus.
Das gilt allerdings nur für primitive Datentypen! Sobald du eine neue Klasse erstellst und davon Instanzen erschaffst hast du verschiedene Möglichkeiten diese zu vergleichen. In diesem Fall liefern dir die Sachen verschiedene Ergebnisse zurück und zwar:
== schaut ob es das gleich Objekt ist, nicht der Wert der darin steht. Du kannst zwei Objekte mit den gleichen Parametern instanziieren, der Vergleich liefert dir aber false, da die Variablen auf unterschiedliche Objekte zeigen.
Die Equals-Methode wird von jedem Objekt geerbt, weil sie in der Object-Klasse selber definiert ist. Die Standardimplementation liefert dir das gleiche Ergebnis wie ==, aber du kannst die Methode überschreiben. In der Regel überschreibt man diese dann indem man alle Werte der Objekte vergleicht, in deinem Fall wäre das dann die Punkteklasse, die die x- und y-Werte beider Objekte vergleicht und ein entsprechendes Ergebnis zurückgibt. Bindest du die Equals-Methode ein, solltest du auch die hashCode()-Methode überschreiben, wie oben bereits erwähnt, da du sonst Probleme bekommst wenn du die Objekte in eine HashMap oder ein HashSet setzen willst.
Der Vollständigkeit halber gibt es auch noch ein Comparable-Interface, dass die Methode compareTo() vorschreibt und als Rückgabe -1, 0 und 1 erwartet. Dabei gibt es -1 zurück wenn der Wert der Variablen kleiner ist, 0 wenn er gleich ist und 1 wenn er größer ist. Achtung! Der Wert der Variablen ist nicht zu verwechseln mit dem Wert des übergebenen Objektes.
Ich hoffe das hilft dir etwas weiter
Das gilt allerdings nur für primitive Datentypen! Sobald du eine neue Klasse erstellst und davon Instanzen erschaffst hast du verschiedene Möglichkeiten diese zu vergleichen. In diesem Fall liefern dir die Sachen verschiedene Ergebnisse zurück und zwar:
== schaut ob es das gleich Objekt ist, nicht der Wert der darin steht. Du kannst zwei Objekte mit den gleichen Parametern instanziieren, der Vergleich liefert dir aber false, da die Variablen auf unterschiedliche Objekte zeigen.
Die Equals-Methode wird von jedem Objekt geerbt, weil sie in der Object-Klasse selber definiert ist. Die Standardimplementation liefert dir das gleiche Ergebnis wie ==, aber du kannst die Methode überschreiben. In der Regel überschreibt man diese dann indem man alle Werte der Objekte vergleicht, in deinem Fall wäre das dann die Punkteklasse, die die x- und y-Werte beider Objekte vergleicht und ein entsprechendes Ergebnis zurückgibt. Bindest du die Equals-Methode ein, solltest du auch die hashCode()-Methode überschreiben, wie oben bereits erwähnt, da du sonst Probleme bekommst wenn du die Objekte in eine HashMap oder ein HashSet setzen willst.
Der Vollständigkeit halber gibt es auch noch ein Comparable-Interface, dass die Methode compareTo() vorschreibt und als Rückgabe -1, 0 und 1 erwartet. Dabei gibt es -1 zurück wenn der Wert der Variablen kleiner ist, 0 wenn er gleich ist und 1 wenn er größer ist. Achtung! Der Wert der Variablen ist nicht zu verwechseln mit dem Wert des übergebenen Objektes.
Ich hoffe das hilft dir etwas weiter