Objektreferenzvergleich vs. Wertgleichheit in Java
In Java kann die Bestimmung der Objektgleichheit verwirrend sein, wenn Zeichenfolgen mit dem ==-Operator verglichen werden . Schauen wir uns dieses scheinbar mehrdeutige Verhalten genauer an.
Stellen Sie sich das folgende Szenario vor:
// Define a String array String[] parts = {"231", "CA-California", "Sacramento-155328", "aleee", "Customer Service Clerk", "Alegra Keith.doc.txt"}; // Perform comparison if ("231" == parts[0]) { // This comparison will evaluate to false }
Überraschenderweise gibt der Vergleich „falsch“ zurück. Dies liegt daran, dass der ==-Operator in Java die Gleichheit der Objektreferenzen prüft, nicht die Gleichheit der Werte. Anders als in vielen anderen Sprachen sind Java-Strings Objekte. Wenn Sie zwei Zeichenfolgen mit == vergleichen, werden die Speicheradressen verglichen, in denen sich diese Objekte befinden, nicht die tatsächlichen Zeichenfolgenwerte.
Um die tatsächlichen Werte von Zeichenfolgen zu vergleichen, sollten Sie die Methode String.equals verwenden:
if ("231".equals(parts[0])) { // This comparison will evaluate to true }
Diese Methode überprüft den Inhalt der Zeichenfolgen, nicht ihre Objektreferenzen.
Denken Sie daran, dass für alle Objekte in Java der Operator == prüft Referenzgleichheit, während die Methode „equals“ die tatsächlichen Objektwerte vergleicht. Es ist wichtig, „equals“ zu verwenden, wenn Sie die Gleichheit von Objekten prüfen, da == beim Vergleich von Objektreferenzen zu falschen Schlussfolgerungen führen kann.
Das obige ist der detaillierte Inhalt vonJava-String-Vergleich: „==' vs. „.equals()' – wann welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!