Autoboxing и Unboxing в Ява

Днес ние ще говорим за avtoupakovke (autoboxing) и разопаковането (Unboxing). Това е един от най-важните изменения по отношение на JDK 5. Сега разработчиците могат да пишат по-чист код, но липса на разбиране на този механизъм може да доведе до лошо изпълнение.

Avtoupakovka

  1. При определяне стойности на примитивен тип променлива съответната обвивка клас.
  2. При прехвърляне примитивен тип в параметъра метод, до съответната обвивка клас.

Тъй JDK 5

Тази трансформация обвивка клас в съответния примитивен тип. Ако е имало до нула, когато разопаковате клас обвивка. ще java.lang.NullPointerException изключение.

  1. При определяне променлива обвивка клас например съответстващ примитивен тип.
  2. В изразите, в които един или и двата аргумента-опаковките са случаи на класове (с изключение на операция == и! =).
  3. При прехвърляне на метод обвивка клас обект, в очакване на подходящ примитивен тип.

Нека разгледаме по-подробно.

1. При определяне

Тъй JDK 5

2. изрази

От операторите на аритметични и сравнение на цени (с изключение == и! =) Прилага се само за примитивните типове, той трябваше да се направи ръчно декомпресира, което намалява разбираемостта на изразяване, което ги прави тромави и кода по принцип.

Отговор: на първо място - вярно, във втория и третия - невярно.
В първия случай то е действително нарича статичен метод java.lang.Integer.valueOf (инт), който кешира стойности от -128 до 127 (можете да промените горната граница), както и от повторното им вади на басейна на така наречените (набор инициализира и готови за използване на обекти ). Във втория има изрично създаване обект, така че те да имат различни връзки.

3. Във връзка с метод

Тя ще се появи инт, но трябва да се отбележи, че ако методът е реализиран със съответното претоварване клас обвивка, е ползвана от него.

слабо представяне

Обвивка неизменни класове, така че когато всеки avtoupakovke (с изключение на стойностите на басейна) създава нов обект, който може да доведе до неразумно изразходване на паметта.

Примитивни типове и техните обвивки на класове