Autoboxing și unboxing în Java
Astăzi vom vorbi despre avtoupakovke (autoboxing) și despacheta (despachetare). Aceasta este una dintre cele mai importante modificări aduse JDK 5. Acum dezvoltatorii pot scrie cod curat, dar lipsa de înțelegere a acestui mecanism ar putea duce la o performanță slabă.
Avtoupakovka
- Atunci când se atribuie valori de tip primitiv din clasa wrapper corespunzătoare variabilă.
- Când se transferă un tip primitiv în parametrul metodei, până la clasa înveliș corespunzător.
Din moment ce JDK 5
Această clasă de transformare înveliș în tipul primitiv corespunzător. Dacă ar fi fost să nul despache- clasa înveliș. va java.lang.NullPointerException excepție.
- Atunci când se atribuie variabilei de clasă wrapper exemplu de tip primitiv corespunzător.
- În expresiile, în care unul sau ambele argumente de ambalajele sunt instanțe ale claselor (cu excepția pentru operare == și! =).
- Când se transferă metoda wrapper obiect de clasă, până la tipul primitiv adecvat.
Să considerăm mai detaliat.
1. Atunci când se atribuie
Din moment ce JDK 5
2. Expresiile
Deoarece operatorii de aritmetica și compararea (cu excepția == și! =) Se aplică doar la tipurile primitive, a trebuit să fie făcut manual decomprima, ceea ce reduce lizibilitatea de expresii, ceea ce le face greoaie, iar codul în general.
Răspuns: în primul rând - adevărat, în al doilea și al treilea - fals.
În primul caz este numit de fapt o metoda statica java.lang.Integer.valueOf (int), care memorează în cache valorile -128-127 (puteți modifica limita superioară), și de la reutilizarea le scoate din piscina de așa-numitele (set inițializat și obiecte gata de utilizare ). În al doilea există o creație obiect explicit, astfel încât acestea au legături diferite.
3. Cu referire la o metodă
Acesta va fi afișat int, dar este de remarcat faptul că în cazul în care metoda este implementată cu o supraîncărcare corespunzătoare clasei înveliș, este invocat de el.
performanță slabă
Wrapper clase imuabile, astfel încât atunci când fiecare avtoupakovke (cu excepția valorilor piscinei) creează un nou obiect, ceea ce poate duce la un consum de memorie nerezonabil.