Was sind nicht zwei lange Variablen, die mit dem Operator == in Java zu vergleichen sind?

Beim Vergleich von 2 Long-Variablen ist ein sehr seltsames Problem aufgetreten. Sie zeigen immer "false" an. Durch das Debuggen in Eclipse kann sichergestellt werden, dass sie denselben Zahlenwert haben:

if (user.getId() == admin.getId()) {
    return true; // Always enter here
} else {
    return false;
}

Die beiden obigen 2 Rückgabewerte sind vom Objekttyp Long, was mich verwirrte. Und um zu überprüfen, ob ich eine Hauptmethode wie diese geschrieben habe:

Long id1 = 123L;
Long id2 = 123L;

System.out.println(id1 == id2);

Es druckt wahr.

Kann mir jemand Ideen geben? Ich arbeite seit 3 ​​Jahren in der Java-Entwicklung, kann diesen Fall aber nicht erklären.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage