Heim >Java >javaLernprogramm >Warum schlägt „==' beim Vergleichen von Zeichenfolgen in Java fehl?

Warum schlägt „==' beim Vergleichen von Zeichenfolgen in Java fehl?

Linda Hamilton
Linda HamiltonOriginal
2024-11-30 04:40:14112Durchsuche

Why Does

Fehler beim String-Vergleich mit == in Java

In Java beim Umgang mit Strings der Vergleich mit dem Gleichheitsoperator (==) kann zu unerwarteten Ergebnissen führen. Obwohl zwei Zeichenfolgen identisch erscheinen, kann der Vergleich zu „Falsch“ führen. Um Fehler zu vermeiden, ist es entscheidend, den Grund für dieses Verhalten zu verstehen.

Der Kern des Problems liegt in der objektorientierten Architektur von Java. Zeichenfolgen werden in Java als Objekte im Speicher gespeichert und der Gleichheitsoperator (==) vergleicht die Verweise auf diese Objekte und nicht auf deren Inhalt. Selbst wenn die tatsächlichen String-Werte gleich sind, können die Referenzadressen daher unterschiedlich sein, was zu einem falschen Vergleich führt.

Um die String-Werte genau zu vergleichen, sollte man die vom String bereitgestellte Methode equal() verwenden Klasse. Diese Methode vergleicht den String-Inhalt direkt und stellt so die Erkennung echter Gleichheit sicher. Es ist wichtig zu beachten, dass die Methode equal() in benutzerdefinierten Klassen überschrieben werden sollte, in denen ein wertbasierter Vergleich gewünscht ist.

Beispiel:

Bedenken Sie den folgenden Codeausschnitt:

String[] parts = {"231", "CA-California", "Sacramento-155328", "aleee", "Customer Service Clerk", "Alegra Keith.doc.txt"};

if ("231" == parts[0]) {
  // Comparison using ==
  System.out.println("False! Why?");
}

if ("231".equals(parts[0])) {
  // Comparison using equals()
  System.out.println("True");
}

Der erste Vergleich mit == ergibt „false“, wenn er die Objektreferenzen vergleicht, während der zweite Vergleich mit „equals()“ korrekt „true“ zurückgibt, wenn er die String-Werte auswertet. Es ist wichtig, equal() für wertbasierte Vergleiche zu verwenden, um falsche Ergebnisse zu vermeiden und genaue logische Ergebnisse sicherzustellen.

Das obige ist der detaillierte Inhalt vonWarum schlägt „==' beim Vergleichen von Zeichenfolgen in Java fehl?. 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