Hirdetés

Új hozzászólás Aktív témák

  • Karma
    félisten

    Aha, ha lehet tovább boncolgatnám a témát, valamit félre értelmezek szerintem... ahogy jobban megnéztem a példát.

    Integer s = new Integer(8); // ez oké
    Integer t = new Integer(8); // így s és t különböznek
    Integer t = 8; // ez nem oké
    Integer s = 8; // így s és t megegyezik

    Ahogy nézem a forráskódot, mindig egy new Integer(i)-vel tér vissza, ami ugye objektum, de s és t az utolsó esetben megegyezik! Pedig ezek is objektumok. Vagy valahol a rendszer mélyén felismeri ezt JVM és oda hivatkoztatja az s és t változókat?

    A második esetben történik a már a legelején emlegetett autoboxing, tehát a JVM látja a primitív int 8-ast és hogy Integer objektum kellene, ezért automatikusan meghívja az Integer.valueOf() függvényt rá.

    És ez a függvény, mint látszott, belső cache-t használ a kis számokra, ugyanazt a konkrét objektumot adja vissza.

Új hozzászólás Aktív témák