Vergleich von Objekten

Hallo,

Im folgenden Code liefert der Vergleich zweier verschiedener Objekte mit gleichem Wert true zurück. Warum passiert das? Was muss ich tun, damit der Vergleich richtig ausgeführt wird?

public class MinimalBeispiel {

public static void main(String[] argv){
 VerweisListe l=new VerweisListe();

 l.insert(new Integer(1));
 l.insert(new Integer(2));
 l.insert(new Integer(1));

 Object element=l.elem(); //Gibt das aktuelle (3.) Element aus
 l.reset(); //Geht zum ersten Element
 Object element2=l.elem(); //Gibt das aktuelle (1.) Element aus

 if(element==element2)
 IO.println("Fehler!");
 }
} 

Die Implementation von VerweisListe findet ihr hier: http://www-lehre.inf.uos.de/~ainf/2007/Vorlesung/Ver…
Ich gehe davon aus, dass sie korrekt ist.

Viele Grüße, Falk

Hallo,

Im folgenden Code liefert der Vergleich zweier verschiedener
Objekte mit gleichem Wert true zurück. Warum passiert das? Was
muss ich tun, damit der Vergleich richtig ausgeführt wird?

public class MinimalBeispiel {

public static void main(String[] argv){
VerweisListe l=new VerweisListe();

l.insert(new Integer(1));
l.insert(new Integer(2));
l.insert(new Integer(1));

Object element=l.elem(); //Gibt das aktuelle (3.) Element
aus
l.reset(); //Geht zum ersten Element
Object element2=l.elem(); //Gibt das aktuelle (1.) Element
aus

if(element==element2)
IO.println(„Fehler!“);
}
}

was meinst du genau??
der vergleich muss ja true sein weil 1 == 1 verglichen wird…

Hallo Michael,

es werden nicht zwei ints verglichen, sondern zwei Integer-Objekte. Der Vergleich sollte false liefern, weil es sich um verschiedene Objekte handelt. Meines Wissens liefert der ==-Operator, wenn er auf Objekte angewendet wird, nur dann true zurück, wenn die Referenzen übereinstimmen. Die Referenzen des ersten und dritten Integer-Objekts sollten verschieden sein.

Viele Grüße, Falk

Vergleich von Integer-Objekten
Hallo,

wie das folgende Beispiel zeigt, liefert der Vergleich zweier Integer-Objekte auch dann false, wenn ihre Werte übereinstimmen.

public class CompareIntegers{

 public static void main(String[] argv){
 Integer i= new Integer(1);
 Integer j= new Integer(1);

 if (i==j)
 System.out.println("i==j");
 else
 System.out.println("i!=j");
 }
}

Viele Grüße, Falk

Problem behoben.
Ich habe den Fehler gefunden. Das Problem ist behoben.