Antwort von
nach 8 Stunden
hilfreich
Re^2: Rückgabewert von leerem Textfeld
Hallo allerseits!
Nicht, dass ich hier kleinlich sein will. Ich weiß ja was gemeint ist, aber in solchen Foren sollte man doch etwas genauer auf die Sprache achten, da hier sicherlich viele Newbies die Beiträge lesen. Und für die ist sicher eine etwas ausfühlichere Antwort besonders hilfreich.
Der Vergleich mit == geht nur bei null und bei primitiven
Datentypen.
Wenn du Objekte vergleichen willst, solltest du immer über
equals gehen.
iss mir z.B. zu Schwammig, man weiß jetzt zwat irgendwie, daß das so ist, aber warum ist das so???
int z.B. ist ein primitiver Datentyp. Mit dem Code
int a=5;
wird ein Speicherbereich angelegt in dem ein int Platz hat und mit dem Wert 5 belegt. Überall, wo im Code jetzt a verwendet wird heißt das "nimm den Inhalt aus diesem Speicherbereich der mit a markiert ist". Aus dem Code
if( a==3 ) ... wird also zur Laufzeit ein Vergleich zwischen dem aktuellen Inhalt von a und 3.
Alle Variablen, die als Typ eine Klasse haben werden als Referenzvariable bezeichnet. Auch hier muß ein Speicherbereich vorgesehen werden, der ein Objekt dieses Typs aufnehmen kann. Allerdings wird in der Variablen selbst nur ein Zeiger auf diesen Bereich gespeichert. Hat man zwei Objekte o1 und o2, dann wird auch hier bei:
if( o1==o2 ) ... der Inhalt von o1 und o2 miteinander verglichen. Dabei handelt es sich aber jetzt um die Zeiger. Das heißt, dieser Vergleich ist dann true, wenn beide Referenzvariablen auf das gleiche Objekt zeigen. Auch das kann in einem Programm eine sinnvolle Operation sein (soviel zu "immer über equals").
Wenn man überprüfen will, ob der Inhalt von Objekten übereinstimmt, dann ist die Methode equals zu benutzen. Aber Achtung! bei eigenen Objekten ist es ratsam diese Methode entsprechend zu überschreiben.
Gruß
Benky