Powiel możliwe:
Inconsistent behavior on java's ==
Integer wrapper objects share the same instances only within the value 127?java == dla Integer
Znalazłem następujące == zachowanie dla obiektów Integer i nie udało mi się go zrozumieć. (Zdaję sobie sprawę, że należy stosować równe dla takich porównań, ale uczę się na OCPJP ...)
W skrócie, == działa zgodnie z oczekiwaniami do 1000, ale nie do 10.
Były fragmentem kodu:
Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2) System.out.println("different objects");
if(i1.equals(i2)) System.out.println("meaningfully equal");
i zachowuje się, jak można by oczekiwać, że:
different objects
meaningfully equal
Ten ostatni mimo:
Integer i3 = 10;
Integer i4 = 10;
if(i3 == i4) System.out.println("same object");
if(i3.equals(i4)) System.out.println("meaningfully equal");
ma następujący wynik:
same object
meaningfully equal
Może ktoś proszę wyjaśnić, dlaczego tak się dzieje?
BTW Spróbuj z '-XX: + AggressiveOpts' a pierwszy z nich będzie zachowywać się jak drugi, jak zwiększa rozmiar pamięci podręcznej Integer. ;) –