Sie benötigen zwei Variablen, die vergleichbar sind, haben den gleichen Wert, aber verschiedene Instanzen darstellen, zum Beispiel:
Integer x = new Integer(0);
Integer y = new Integer(0);
x <= y
und y <= x
beide wahr sind, weil die Integer
unboxed sind jedoch die Gleichheit Instanz x == y
ist falsch.
Beachten Sie, dass es funktioniert mit Float
, Long
und Double
auch, und jeder Wert (und nicht nur 0) funktioniert.
Sie können auch mit den Feinheiten Ihrer JVM spielen - sie ganze Zahl von bis zu 127 nur allgemein zwischenzuspeichern, so dass diese auch funktionieren würde:
Integer x = 128;
Integer y = 128;
(aber es wäre nicht mit 127).
Oder einfach mehr, da Double
s sind in der Regel überhaupt nicht im Cache gespeichert:
Double x = 0d;
Double y = 0d;
Was ist der Typ von x und y? Sind sie Primitive oder Referenztypen oder dürfen sie irgendetwas sein? – prashant
Sie möchten zwei Instanzen der gleichen Nummer. Die '<=' and '> =' heben sich gegenseitig auf, solange 'x gleich y ist, aber 'x == y' ist eine Referenzprüfung, daher werden zwei Instanzen auf' x! = y' wahr, obwohl sie gleichwertig sind. – Shark
YAUIQ - noch eine nutzlose Interviewfrage. Interessant, sogar unterhaltsam, ich habe nichts dagegen, es hier zum Vergnügen und sogar zum Lernen zu stellen.Aber ich glaube nicht, dass es jemandem hilft zu bewerten, wie gut ein Programmierer-Mitarbeiter der Befragte sein wird. – arcy