Als SCJP-Student sind mir die Unterschiede von equals() und == wohl bekannt. Beim Testen habe ich folgenden Code laufen lassen:
Nun, i1==i2 liefert true, aber d1==d2 liefert false, Float liefert ebenfalls false. Kann mir jemand auf die Sprünge helfen, weshalb der Vergleich mit String, Integer, Byte etc. true liefert aber mit Double und Float false? Korrekterweise sollten Vergleiche auf den Inhalt stets mit überschriebener equals()-Methoden erfolgen. Dennoch hätte ich gerne eine Begründung für mein false-Problem.
Code:
public class IntegerExampe {
public static void main(String[] args) {
Integer i1 = 5;
Integer i2 = 5;
Double d1 = 1.0;
Double d2 = 1.0;
System.out.println(i1==i2);
System.out.println(d1==d2);
}
}
Nun, i1==i2 liefert true, aber d1==d2 liefert false, Float liefert ebenfalls false. Kann mir jemand auf die Sprünge helfen, weshalb der Vergleich mit String, Integer, Byte etc. true liefert aber mit Double und Float false? Korrekterweise sollten Vergleiche auf den Inhalt stets mit überschriebener equals()-Methoden erfolgen. Dennoch hätte ich gerne eine Begründung für mein false-Problem.