Musisz dwie zmienne, które są porównywalne, mają taką samą wartość, ale reprezentują różne przypadki, na przykład:
Integer x = new Integer(0);
Integer y = new Integer(0);
x <= y
i y <= x
są zarówno prawdziwe, ponieważ Integer
są unboxed jednak równość instancja x == y
jest fałszywy.
Pamiętaj, że działa również z Float
, Long
i Double
i działa dowolna wartość (nie tylko 0).
Można również grać z zawiłości swojej JVM - one zazwyczaj buforować całkowita do 127 tylko, więc to będzie działać zbyt:
Integer x = 128;
Integer y = 128;
(ale nie ze 127).
Albo prościej, ponieważ Double
s generalnie nie są buforowane w ogóle:
Double x = 0d;
Double y = 0d;
Jaki jest typ xiy. Czy są to prymitywy lub referencje, czy wolno im być kimkolwiek? – prashant
Chcesz dwa wystąpienia tego samego numeru. '<=' and '> =' anuluj się tak długo, 'x jest równe y numerycznie' ale' x == y' jest sprawdzaniem referencji, ergo dwa wystąpienia zwrócą true na 'x! = y', nawet jeśli są równe wartości. – Shark
YAUIQ - kolejne bezużyteczne pytanie dotyczące wywiadu. Ciekawe, a nawet zabawne, nie mam zastrzeżeń do umieszczania go tutaj dla rozrywki, a nawet uczenia się.Ale nie sądzę, że pomoże to nikomu ocenić, jak dobry jest pracownik programisty, z którym rozmawia. – arcy