hansmueller
Mitglied
Hallo,
ich habe ein Verständnisproblem bei dem Operator "==".
Wenn ich es richtig verstanden habe, wird bei Objekten mit den Operator "==" nicht der Inhalt, sondern die Reverenz (also der Speicherort) verglichen.
Zwei verschieden Objekte sollten daher immer "false" liefern, auch wenn deren Inhalt gleich ist. ==> Tut es aber nicht immer
Folgendes Beispielprogramm
liefert folgende Ausgabe:
Müsste theoretisch nicht bei allen Vergleichen mit "==" ein "false" herauskommen.
Warum ist das nicht so?
MfG
hansmueller
ich habe ein Verständnisproblem bei dem Operator "==".
Wenn ich es richtig verstanden habe, wird bei Objekten mit den Operator "==" nicht der Inhalt, sondern die Reverenz (also der Speicherort) verglichen.
Zwei verschieden Objekte sollten daher immer "false" liefern, auch wenn deren Inhalt gleich ist. ==> Tut es aber nicht immer
Folgendes Beispielprogramm
Code:
public class MainProg
{
public static void main(String[] args)
{
Integer x = 1;
Integer y = 1;
Double e = 1.0;
Double r = 1.0;
Long c = 1l;
Long v = 1l;
Float u = 1.0f;
Float i = 1.0f;
System.out.println(x == y);
System.out.println(x.equals(y));
System.out.println("------------");
System.out.println(e == r);
System.out.println(e.equals(r));
System.out.println("------------");
System.out.println(c == v);
System.out.println(c.equals(v));
System.out.println("------------");
System.out.println(u == i);
System.out.println(u.equals(i));
}
}
liefert folgende Ausgabe:
Code:
true
true
------------
false
true
------------
true
true
------------
false
true
Müsste theoretisch nicht bei allen Vergleichen mit "==" ein "false" herauskommen.
Warum ist das nicht so?

MfG
hansmueller