Der Unterschied zwischen „==" und equal() in Java
Für den relationalen Operator „==" beschreibt „Java Programming Thoughts“ ihn so: „Der relationale Operator generiert einen booleschen Wert als a Als Ergebnis berechnen sie Beziehungen zwischen den Werten ihrer Operanden. Der „Wert“ des Operanden hier verdient unsere Aufmerksamkeit. Für die 8 Grunddatentypen (boolean, byte, char, short, int, float, double, long) speichern ihre Variablen direkt „Werte“. Wenn wir daher „==“ verwenden, um Variablen grundlegender Datentypen zu vergleichen, ist der tatsächliche Vergleich der in der Variablen gespeicherte Wert, zum Beispiel:
public static void main(String[] args) { int a = 5, b = 5; System.out.println(a == b); }
Offensichtlich gibt das Programm Folgendes aus: true. Aber was ist mit dem folgenden Code?
public static void main(String[] args) { Integer c = new Integer(5), d = new Integer(5); System.out.println(c == d); }
Wir führen das Programm aus und stellen fest, dass die Ausgabe falsch ist. Dies liegt daran, dass Integer kein grundlegender Datentyp in Java ist. Seine Variablen c und d werden als Referenzen bezeichnet, die auf Objekte in Java verweisen. Der „Wert“, den sie speichern, ist die Adresse des Objekts im Speicher, nicht der Wert „5“ selbst. Daher speichern c und d tatsächlich die Adressen zweier Integer-Objekte mit dem Wert „5“. Diese beiden Objekte befinden sich nicht im selben Speicherbereich, und das Ergebnis des „==“-Vergleichs ist natürlich falsch.
Womit vergleicht die Methode equal()? equal() ist eine in der Basisklasse Object definierte Methode. In der Object-Klasse ist die equal()-Methode wie folgt definiert:
public boolean equals(Object obj) { return (this == obj); }
Dies entspricht „==". Tatsächlich liegt die Bedeutung der Methode equal() im Umschreiben, andernfalls ist der Aufruf von equal() bedeutungslos. Beispielsweise überschreibt die von Object geerbte Integer-Klasse die Methode equal():
public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
Die Bedeutung dieser Methode besteht darin, Werte zu vergleichen, also wenn wir zwei Integer-Objekte verwenden mit demselben Wert rufe equal() zum Vergleich auf:
public static void main(String[] args) { Integer c = new Integer(5), d = new Integer(5); System.out.println(c.equals(d)); }
Das Ergebnis ist wahr.
Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, vielen Dank für Ihre Unterstützung dieser Website!
Ausführlichere Artikel, die den Unterschied zwischen „==“ und equal() in Java erklären, finden Sie auf der chinesischen PHP-Website!