Răspunsuri la interviul cu întrebări de nivel29

Răspunsuri la întrebările de interviu Nivel29

1 Ce este autoboxingul?
Avtoupakovka o inițializare implicită mecanism obiect clase-ambalaje (Byte, scurt, Caracter, Integer, Long, Float, Double) valori corespunzătoare tipuri primitive originale (resp. Byte, scurt, char, int, lung, float, dublu), fără acordul expres folosind constructorul de clasă.






Avtoupakovka are loc prin atribuire directă primitive - o clasa înveliș (folosind „=“) sau în parametrii de transmisie în metoda primitive ( „clasa wrapper“ tip). Avtoupakovke în „wrappers“ poate fi supusă ca un tipuri variabile primitive și compilare constante (literals și finale-primitivelor). Astfel, literali trebuie să fie corect sintactic pentru inițializarea sursă variabilă de tip primitiv.

Ambalarea automată a tipurilor primitive variabile necesită o potrivire exactă cu tipul primitivului original - tipul de "clasă de înfășurare".






De exemplu, încercarea de a copia automat o variabilă de octet de tip la Short, fără o primă difuzare explicită byte-> short, va provoca o eroare de compilare.

Auto-ambalarea de constante de tipuri primitive permite granițe mai largi de corespondență. În acest caz, compilatorul poate pre-implementa o extensie / contracție implicită de tip primitiv. Transformarea are loc în două etape:
1) extinderea implicită (contracție) a tipului original de primitiv pentru ambalaje corespunzătoare de tip primitiv (pentru conversia int> Byte, primul compilator implicit int îngustează în byte)
2) în avtoupakovku primitivă "clasa wrapper" adecvat (compilator avtoupakovyvaet byte-> byte). Cu toate acestea, în acest caz există două restricții suplimentare:
a) asignarea primitivei la "wrapper" poate fi efectuată numai de operatorul "=" (nu puteți trece un astfel de primitiv la parametrii metodei, fără o difuzare explicită a tipurilor)
b) tipul operandului stâng nu trebuie să fie mai vechi decât Character, tipul operandului drept nu este mai vechi decât int (este permisă extinderea / restricționarea octetului <-> scurt, octet <-> caracter, scurt <-> mangal
și numai octetul restrâns <— int, short <— int, char <— int, все остальные варианты требуют явного приведения типов)







Articole similare

Trimiteți-le prietenilor: