Java Programmieren

equals in Java

Einsatz von equals und Unterschied zu "=="-Operator

Dieser Artikel beschäftigt sich mit der equals-Methode in Java. Warum braucht man equals in Java und wann sollte man equals einsetzen?

Als Programmier-Anfänger wird man, sobald es um Gleichheit geht, dies Reflexartig mit „==“ versuchen. Aber Achtung, nicht immer liefert dieser Vergleich auch das gewünschte Ergebnis. Mittels „==“ wird nämlich lediglich getestet, ob die zu überprüfende Objekte das selbe Objekt (exakt am selben Ort im Speicher) referenzieren. Haben beide eine gemeinsame Instanz, dann gibt eine „==“-Bedingung ein „True“ zurück.

Nun möchte man aber im Normalfall nicht vergleichen, ob die zu überprüfende Objekte das selbe Objekt referenzieren, sondern ob sie den gleichen Inhalt repräsentieren. Um den Inhalt zu vergleichen, nutzt man deswegen die equals()-Methode.

Siehe auch das nachfolgende Beispiel:


public static void main(String[] args) {

		String a = new String("Hello World!");
		String b = new String("Hello World!");

		if (a == b) {
			System.out.print("Sind gleich!");
		}

	}

In diesem Fall würde eben keine Ausgabe stattfinden, da nicht auf Objekt-Gleichheit geprüft wurde. Beim nachfolgenden Beispiel mit der equals-Methode wird nun der Text ausgegeben:


public static void main(String[] args) {

		String a = new String("Hello World!");
		String b = new String("Hello World!");

		if (a.equals(b)) {
			System.out.print("Sind gleich!");
		}

	}

Die Überprüfung von Gleichheit mittels „==“ beschränkt sich also auf:

  • Vergleich um zu sehen, ob eine Referenz null ist
  • Vergleich von primitiven Typen z.B. int (außer float und double)
  • Vergleich von zwei enum-Werten (das funktioniert, da es nur ein Objekt für jede enum-Konstante gibt)
  • Vergleich ob zwei Referenzen auf das selbe Objekt zeigt

Zusammenfassend lässt sich sagen. Der „==“-Operator prüft auf Wert-Gleichheit, während die equals Methode auf (inhaltliche) Objekt-Gleichheit prüft.

Die equals-Methode sollte in selbstgeschriebenen Klassen immer selbst implementiert, also überschrieben, werden! In diesem Fall muss auch hashCode() überschrieben werden!


Hinweis: Du möchtest Java lernen? Vielleicht hilft dir dieser Kurs hier weiter. Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!