1. Списък на видовете обвивки
Знаете, че Java има 8 примитивни типа, които са типове, които не са класове. От една страна, това е добре - те са прости и заемат малко място. От друга страна, понякога часовете са точно това, от което се нуждаем. Ще разберете точно защо е така в следващия урок.
И така, Howво може да се направи?
Започвайки с петата version на Java, всеки примитивен тип получи клас близнак. Всеки такъв клас съхранява едно поле със стойност от определен тип. Тези класове се наричат типове обвивки , защото обвиват примитивни стойности в класове.
Ето списък на тези видове. познавате ли такива
Примитивен тип | Клас обвивка |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Имената на примитивните типове започват с малка буква, но имената на класовете обвивки започват с главна буква. Някои от имената на класовете също са малко по-дълги: Integer
instead of int
и Character
instead of char
.
Всички обекти на класовете обвивки са непроменими ( неизменни ).
Опростеният code за Integer
класа изглежда така:
Код | Забележка |
---|---|
|
Конструктор на променлива Методът връща стойност Статичният метод създава нов Integer обект за int променлива |
2. Преобразуване на an int
в anInteger
Типовете обвивки се считат за двойници на техните примитивни братя и сестри: можете лесно да създадете обект обвивка, който съответства на примитивен тип.
Нека използваме типа int като пример, за да анализираме How примитивните типове взаимодействат със съответните им типове обвивки. Кодът за конвертиране от an int
в an Integer
и обратно ще изглежда така:
За да конвертирате int
в Integer
, трябва да напишете този code:
Integer name = new Integer(value);
Къде name
е името на Integer
променлива и value
е обвитата int
стойност.
Примери:
Код | Забележка |
---|---|
|
|
|
|
|
И за да конвертирате an Integer
в an int
, трябва да напишете този code:
int name = variable.intValue();
Къде name
е името на int
променлива и variable
е препратка към Integer
обект.
Примери:
Код | Забележка |
---|---|
|
|
|
|
|
|
|
|
3. Автобоксиране и разопаковане
Но дори простите операции с Integer
типа не са лесни за писане.
Както казахме по-рано, Integer
типът е непроменим ( immutable ). За да създадете Integer
обект с нова int
стойност, трябва изрично да създадете нов Integer
обект. Това каза, че е лесно да получите стойността на int
съхранена в Integer
обект - просто извикайте intValue()
метода.
Пример:
Код | Описание |
---|---|
|
Обвиване 5 в Integer обект Вземете стойността от Integer обекта Създайте нов Integer обект (равно на 10) |
Това е доста тромав code, не мислите ли?
Създателите на Java са мислor така, затова са научor компилатора How да извършва тези операции автоматично. Автоматичното преобразуване на an int
в an Integer
се нарича autoboxing (автоматично поставяне на стойността в кутия), а обратната операция (преобразуване на an Integer
в an int
) се нарича unboxing .
Вашият code | Какво вижда компилаторът |
---|---|
|
|
|
|
|
|
Благодарение на autoboxing и unboxing, можете безопасно да присвоите an int
на Integer
променлива и обратно. Можете да пишете изрази с всяHowва сложност, без да правите разлика между типовете int
и Integer
.
Примери:
Код | Какво ще генерира компилаторът |
---|---|
|
|
|
|
4. Сравняване на обвиващи променливи
Autoboxing и unboxing са прости и прозрачни процеси. Използваме new Integer()
изрази, ако е необходимо, и извикваме intValue()
метода, ако е необходимо.
Всичко работи добре и лесно за вас, програмиста. Имайте предвид, че ако сравнявате an Integer
и an Integer
, тогава сравнението се основава на референция, а не на стойности.
Код | Конзолен изход |
---|---|
|
|
|
|
Променливите a
и b
не съхраняват int
стойности. Те съхраняват препратки към обекти. Това означава, че е важно да запомните How да ги сравнявате правилно:
погрешно | вярно |
---|---|
|
|
GO TO FULL VERSION