Heim >Java >javaLernprogramm >Wann sollte ich in Java „.equals()' anstelle von „==' verwenden?

Wann sollte ich in Java „.equals()' anstelle von „==' verwenden?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-18 09:48:10475Durchsuche

When Should I Use

Die Unterschiede zwischen „.equals“ und „==" verstehen

Das Beharren Ihres Dozenten auf der Verwendung von „.equals" anstelle von „= =" für Objektvergleiche wirft die Frage nach ihren relativen Vorzügen auf.

Was ist das? Unterschied?

In Java vergleicht „==" Objektreferenzen und bestimmt, ob zwei Objekte denselben Speicherort belegen. Es funktioniert gut für primitive Typen (z. B. int, double), die Werte direkt im Speicher speichern.

Bei nicht-primitiven Typen (z. B. String, Object) vergleicht „==" jedoch Objektreferenzen statt die darin gespeicherten tatsächlichen Werte. Dies kann zu falschen oder unvollständigen Gleichheitsprüfungen führen.

„equals“ hingegen ist eine für benutzerdefinierte Klassen neu definierte Methode, um wertbasierte Gleichheit zu ermitteln. Es kann überschrieben werden, um eine benutzerdefinierte Logik zum Vergleichen von Objekten anzugeben.

Warum ist „.equals“ besser?

Ihr Dozent bevorzugt „.equals“, weil es:

  • Sorgt für Wertgleichheit: Es vergleicht die tatsächlichen Werte von Objekten statt Referenzen.
  • Ermöglicht benutzerdefinierte Logik: Sie kann überschrieben werden, um bestimmte Gleichheitsregeln für benutzerdefinierte Objekte zu implementieren.
  • Behandelt Nullwerte ordnungsgemäß: Aufruf „.equals“ für ein Nullobjekt gibt sicher false zurück, anstatt ein auszulösen Fehler.

Beispiel: Vergleichen von String-Objekten

Betrachten Sie den folgenden Code:

String x = "hello";
String y = new String(new char[] { 'h', 'e', 'l', 'l', 'o' });

"==" würde als falsch ausgewertet werden weil x und y unterschiedliche Objekte sind, obwohl sie denselben Zeichenfolgewert enthalten. Allerdings würde „.equals“ „true“ zurückgeben, da es die Werte der String-Objekte vergleicht.

Fazit

Während „==" schneller ist als „.equals" Bei primitiven Typen sollte dies bei nicht-primitiven Typen zugunsten von „.equals“ vermieden werden. „.equals“ bietet zuverlässigere und flexiblere wertbasierte Gleichheitsprüfungen und stellt sicher, dass Ihr Code unabhängig von Objektverweisen oder benutzerdefinierten Objektdefinitionen korrekt funktioniert.

Das obige ist der detaillierte Inhalt vonWann sollte ich in Java „.equals()' anstelle von „==' verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn