Porovnani v Jave
Ladislav Vaiz
spam na nagano.cz
Čtvrtek Srpen 23 11:56:46 CEST 2012
https://www.google.com/search?q=java+integer+equals
hned první odkaz
http://stackoverflow.com/questions/3637936/java-integer-equals-vs
You can't compare two Integer with a simple == they're objects so most
of the time references won't be the same.
There is a trick, with Integer between -128 and 127, references will be
the same as autoboxing uses Integer.valueOf() which caches small integers.
Je to hnus, velebnosti. Měli bychom Jana donutit používat Javu, pak by
mu i C připadlo jako hezký a logický jazyk :-)
L.
RV napsal(a):
> Zdravim,
>
> snazim se doucit nejak systematicky Javu a pri probirani operatoru
> jsem narazil na toto:
>
> Integer i = 5;
> Integer i2 = 5;
> System.out.println(i == i2); //true
>
> Integer i3 = 128;
> Integer i4 = 128;
> System.out.println(i3 == i4); //false
>
> ja vim, ze se to takto delat nema, ze je na to treba pouzivat metodu
> equals, ale jak k tomu vyhodnoceni ten zatracene javovskej VM dospeje!
>
> Zkousel jsem to opravdu spustit a je to opravdu tak.
>
> Do hodnoty 127 oboji vraci true. Zrejme to souvisi s obalenim
> objektovym wraperem Integer - zrejme se tedy nevraci hodnota ale jen
> odkaz na instanci, ktera samozrejme neni stejna. Ale proc to proboha
> je jen v tom rozsahu -128/127.
>
Další informace o konferenci Hw-list