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