unboxing Poniższe kompiluje kod (z Java 8):Podczas korzystania == za prymitywne i wartości pudełkowej jest autoboxing wykonane lub są wykonywane
Integer i1 = 1000;
int i2 = 1000;
boolean compared = (i1 == i2);
ale co to robi?
Unbox i1
:
boolean compared = (i1.intvalue() == i2);
lub pudełko i2
:
boolean compared = (i1 == new Integer(i2));
Więc to porównanie dwóch Integer
przedmiotów (odnośnik) lub dwa int
zmiennych przez wartość?
Należy zauważyć, że dla niektórych liczb porównanie porównawcze da poprawny wynik, ponieważ klasa Integer utrzymuje wewnętrzny bufor wartości między -128
a 127
(patrz także komentarz TheLostMind). Dlatego w moim przykładzie użyłem 1000
i dlaczego specjalnie pytam o rozpakowanie/boks, a nie o wynik porównania.
pewnością jeśli prowadził ten kod i wydrukować dane wyjściowe można określić ten sam. – Scruffy
Pytanie nie jest dokładnie takie samo, jak to oznaczono jako duplikat :) – TheLostMind
Sprawdź to [pytanie - zasady boksowania automatycznego] (http://stackoverflow.com/questions/12559634/java-autoboxing-rules). W swojej odpowiedzi oczywiście sprawa ta została uwzględniona. –