JavaRush/Java Π±Π»ΠΎΠ³/Random UA/ΠžΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ, розпакування Ρ‚Π° запакування

ΠžΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ, розпакування Ρ‚Π° запакування

Бтаття Π· Π³Ρ€ΡƒΠΏΠΈ Random UA
учасників
Вітання! Π’ΠΈ Π²ΠΆΠ΅ Π½Π΅ΠΏΠΎΠ³Π°Π½ΠΎ Π·Π½Π°ΠΉΠΎΠΌΠΈΠΉ Ρ–Π· ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Π½ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Ρ– Ρ‡ΠΈΠΌΠ°Π»ΠΎ Π· Π½ΠΈΠΌΠΈ ΠΏΠΎΠΏΡ€Π°Ρ†ΡŽΠ²Π°Π². ΠžΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ, розпакування Ρ‚Π° Π·Π°ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° - 1Π£ ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Ρ–Π² Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡƒΠ²Π°Π½Π½Ρ–, Ρ– Java Π·ΠΎΠΊΡ€Π΅ΠΌΠ°, Ρ” Π±Π΅Π·Π»Ρ–Ρ‡ ΠΏΠ΅Ρ€Π΅Π²Π°Π³: Π²ΠΎΠ½ΠΈ Π·Π°ΠΉΠΌΠ°ΡŽΡ‚ΡŒ ΠΌΠ°Π»ΠΎ ΠΏΠ°ΠΌ'яті, Π·Π° Ρ€Π°Ρ…ΡƒΠ½ΠΎΠΊ Ρ‡ΠΎΠ³ΠΎ ΠΏΡ–Π΄Π²ΠΈΡ‰ΡƒΡ”Ρ‚ΡŒΡΡ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŒ Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, Ρ– Ρ‡Ρ–Ρ‚ΠΊΠΎ Ρ€ΠΎΠ·Π΄Ρ–Π»Π΅Π½Ρ– ΠΏΠΎ Π΄Ρ–Π°ΠΏΠ°Π·ΠΎΠ½Π°Ρ… Π·Π½Π°Ρ‡Π΅Π½ΡŒ. Однак Ρƒ процСсі вивчСння Java ΠΌΠΈ Π½Π΅ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎ, Π½Π΅ΠΌΠΎΠ² ΠΌΠ°Π½Ρ‚Ρ€Ρƒ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡŽΠ²Π°Π»ΠΈ β€” β€œ Π² Java всС Ρ” ΠΎΠ±'Ρ”ΠΊΡ‚ΠΎΠΌ ”. АдТС ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²ΠΈ β€” прямС спростування Ρ†ΠΈΡ… слів. Об'Ρ”ΠΊΡ‚Π°ΠΌΠΈ Π²ΠΎΠ½ΠΈ Ρ”. Π’ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ "всС Ρ” ΠΎΠ±'Ρ”ΠΊΡ‚ΠΎΠΌ" Ρ” Ρ…ΠΈΠ±Π½ΠΈΠΌ? Насправді Π½Ρ–. Π£ Java Ρƒ ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΡƒ Ρ” свій Π±Ρ€Π°Ρ‚-близнюк - клас-ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠ° ( Wrapper). Π©ΠΎ Ρ‚Π°ΠΊΠ΅ ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠ°? ΠžΠ±Π³ΠΎΡ€Ρ‚ΠΊΠ° - Ρ†Π΅ ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΈΠΉ клас, який Π·Π±Π΅Ρ€Ρ–Π³Π°Ρ” Π² собі значСння ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Ρƒ. АлС ΠΎΡΠΊΡ–Π»ΡŒΠΊΠΈ Ρ†Π΅ самС клас, Π²Ρ–Π½ ΠΌΠΎΠΆΠ΅ ΡΡ‚Π²ΠΎΡ€ΡŽΠ²Π°Ρ‚ΠΈ свої СкзСмпляри. Π’ΠΎΠ½ΠΈ Π·Π±Π΅Ρ€Ρ–Π³Π°Ρ‚ΠΈΠΌΡƒΡ‚ΡŒ усСрСдині ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Ρ– значСння ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Ρ–Π², Ρƒ своїй Π±ΡƒΠ΄ΡƒΡ‚ΡŒ справТніми ΠΎΠ±'Ρ”ΠΊΡ‚Π°ΠΌΠΈ. Назви класів-ΠΎΠ±Π΅Ρ€Ρ‚ΠΎΠΊ Π΄ΡƒΠΆΠ΅ схоТі Π½Π° Π½Π°Π·Π²ΠΈ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π½ΠΈΡ… ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Ρ–Π², Π°Π±ΠΎ ΠΏΠΎΠ²Π½Ρ–ΡΡ‚ΡŽ Π· Π½ΠΈΠΌΠΈ Π·Π±Ρ–Π³Π°ΡŽΡ‚ΡŒΡΡ. Π’ΠΎΠΆ Π·Π°ΠΏΠ°ΠΌ'ятати Ρ—Ρ… Π±ΡƒΠ΄Π΅ Π΄ΡƒΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ.
Wrapper Classes for Primitive Data Types
Primitive Data Types Wrapper Classes
int Integer
short Short
long Long
byte Byte
float Float
double Double
char Character
boolean Boolean
Об'Ρ”ΠΊΡ‚ΠΈ класів ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΎΠΊ ΡΡ‚Π²ΠΎΡ€ΡŽΡŽΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ само, як Ρ– Π±ΡƒΠ΄ΡŒ-які Ρ–Π½ΡˆΡ–:
public static void main(String[] args) {

   Integer i = new Integer(682);

   Double d = new Double(2.33);

   Boolean b = new Boolean(false);
}
Класи-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ΡŒ Π½Ρ–Π²Π΅Π»ΡŽΠ²Π°Ρ‚ΠΈ Π½Π΅Π΄ΠΎΠ»Ρ–ΠΊΠΈ, які Ρ” Ρƒ ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Π½ΠΈΡ… Ρ‚ΠΈΠΏΡ–Π². ΠΠ°ΠΉΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ–ΡˆΠΈΠΉ Ρ–Π· Π½ΠΈΡ… β€” ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²ΠΈ Π½Π΅ ΠΌΠ°ΡŽΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ–Π² . Наприклад, Ρƒ Π½ΠΈΡ… Π½Π΅ΠΌΠ°Ρ” ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ toString(), Ρ‚ΠΎΠΌΡƒ Ρ‚ΠΈ Π½Π΅ змоТСш, Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄, ΠΏΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ число intΠ½Π° рядок. А ось Ρ–Π· класом-ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΎΡŽ Integerβ€” Π·Π°ΠΏΠΈΡ‚Ρ‚ΠΎ.
public static void main(String[] args) {

   Integer i = new Integer(432);

   String s = i.toString();
}
Π’ΠΈΠ½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ складнощі Ρ– Π·Ρ– Π·Π²ΠΎΡ€ΠΎΡ‚Π½ΠΈΠΌ пСрСтворСнням. ΠŸΡ€ΠΈΠΏΡƒΡΡ‚ΠΈΠΌΠΎ, Ρƒ нас Ρ” рядок, ΠΏΡ€ΠΎ який ΠΌΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Ρ”ΠΌΠΎ, Ρ‰ΠΎ Π²Ρ–Π½ ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒ число. Π’ΠΈΠΌ Π½Π΅ мСнш, Ρƒ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ Π· ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Π½ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ intΠΌΠΈ ніяк Π½Π΅ Π·ΠΌΠΎΠΆΠ΅ΠΌΠΎ Ρ†Π΅ число Π· рядка дістати Ρ– ΠΏΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ, власнС, Π½Π° число. АлС завдяки класам-ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠ°ΠΌ Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒ Ρƒ нас Π·'явилася.
public static void main(String[] args) {

   String s = "1166628";

   Integer i = Integer.parseInt(s);

   System.out.println(i);
}
Висновок: 1166628 Ми ΡƒΡΠΏΡ–ΡˆΠ½ΠΎ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Π»ΠΈ число Π· рядка Ρ– привласнабо ΠΉΠΎΠ³ΠΎ Π² Π·ΠΌΡ–Π½Π½Ρƒ-посилання Integer i. Π”ΠΎ Ρ€Π΅Ρ‡Ρ–, Ρ‰ΠΎΠ΄ΠΎ посилань. Π’ΠΈ Π²ΠΆΠ΅ Π·Π½Π°Ρ”Ρˆ, Ρ‰ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡŒΡΡ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΏΠΎ-Ρ€Ρ–Π·Π½ΠΎΠΌΡƒ: ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²ΠΈ Π·Π° значСнням, Π° ΠΎΠ±'Ρ”ΠΊΡ‚ΠΈ Π·Π° посиланням. Π’ΠΈ моТСш використовувати Ρ†Π΅ знання ΠΏΡ€ΠΈ створСнні своїх ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ–Π²: якщо Ρ‚Π²Ρ–ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π°Ρ†ΡŽΡ”, Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄, Π· Π΄Ρ€ΠΎΠ±ΠΎΠ²ΠΈΠΌΠΈ числами, Π°Π»Π΅ Ρ‚ΠΎΠ±Ρ– ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Π° Π»ΠΎΠ³Ρ–ΠΊΠ° самС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρ– Π·Π° посиланням, Ρ‚ΠΈ моТСш ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Double/FloatΠ·Π°ΠΌΡ–ΡΡ‚ΡŒ double/float. ΠšΡ€Ρ–ΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ€Ρ–ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ–Π² Ρƒ класах-ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠ°Ρ… Ρ” Π΄ΡƒΠΆΠ΅ Π·Ρ€ΡƒΡ‡Π½Ρ– для використання статичні поля. Наприклад, уяви, Ρ‰ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΎΠ±ΠΎΡŽ Π·Π°Ρ€Π°Π· ΡΡ‚ΠΎΡ—Ρ‚ΡŒ завдання: вивСсти Π² консоль максимально ΠΌΠΎΠΆΠ»ΠΈΠ²Π΅ число int, Π° ΠΏΠΎΡ‚Ρ–ΠΌ ΠΌΡ–Π½Ρ–ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ»ΠΈΠ²Π΅. Завдання Π½Π°Ρ‡Π΅Π±Ρ‚ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½Π΅, Π° всС ΠΎΠ΄Π½ΠΎ β€” Π±Π΅Π· Π³ΡƒΠ³Π»Π° навряд Ρ‡ΠΈ Π²ΠΏΠΎΡ€Π°Ρ”ΡˆΡΡ. А класи-ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ΡŒ Π²ΠΈΡ€Ρ–ΡˆΡƒΠ²Π°Ρ‚ΠΈ Ρ‚Π°ΠΊΡ– β€œΠΏΠΎΠ±ΡƒΡ‚ΠΎΠ²Ρ– завдання”:
public class Main {
   public static void main(String[] args) {

       System.out.println(Integer.MAX_VALUE);
       System.out.println(Integer.MIN_VALUE);
   }
}
Π’Π°ΠΊΡ– поля Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ΡŒ Π½Π΅ відволікатися Π²Ρ–Π΄ Π±Ρ–Π»ΡŒΡˆ сСрйозних завдань. НС ΠΊΠ°ΠΆΡƒΡ‡ΠΈ Π²ΠΆΠ΅ ΠΏΡ€ΠΎ Ρ‚Π΅, Ρ‰ΠΎ Π² процСсі Π΄Ρ€ΡƒΠΊΡƒ числа 2147483647 (Ρ†Π΅ якраз MAX_VALUE) Π½Π΅ Π΄ΠΈΠ²Π½ΠΎ Ρ– опСчататися:) ΠšΡ€Ρ–ΠΌ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΎΠ΄Π½Ρ–ΠΉ Π· ΠΌΠΈΠ½ΡƒΠ»ΠΈΡ… Π»Π΅ΠΊΡ†Ρ–ΠΉ ΠΌΠΈ Π²ΠΆΠ΅ Π·Π²Π΅Ρ€Ρ‚Π°Π»ΠΈ ΡƒΠ²Π°Π³Ρƒ Π½Π° Ρ‚Π΅, Ρ‰ΠΎ ΠΎΠ±'Ρ”ΠΊΡ‚ΠΈ класів- ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΎΠΊ Ρ” Π½Π΅Π·ΠΌΡ–Π½Π½ΠΈΠΌΠΈ (Immutable) .
public static void main(String[] args) {

   Integer a = new Integer(0);
   Integer b = new Integer(0);

   b = a;
   a = 1;
   System.out.println(b);
}
Висновок: 0 Об'Ρ”ΠΊΡ‚, Π½Π° який спочатку Π²ΠΊΠ°Π·ΡƒΠ²Π°Π»ΠΎ посилання Π°, Π½Π΅ Π·ΠΌΡ–Π½ΠΈΠ² свій стан, Ρ–Π½Π°ΠΊΡˆΠ΅ значСння bΡ‚Π΅ΠΆ змінилося Π±. Π―ΠΊ Ρ– Ρƒ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ Π·Ρ–StringΠ·Π°ΠΌΡ–ΡΡ‚ΡŒ Π·ΠΌΡ–Π½ΠΈ стану ΠΎΠ±'Ρ”ΠΊΡ‚Π°-ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ Π² ΠΏΠ°ΠΌ'яті ΡΡ‚Π²ΠΎΡ€ΡŽΡ”Ρ‚ΡŒΡΡ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΎΠ²ΠΈΠΉ ΠΎΠ±'Ρ”ΠΊΡ‚. Π§ΠΎΠΌΡƒ ΠΆ Ρ‚Π²ΠΎΡ€Ρ†Ρ– Java, Π·Ρ€Π΅ΡˆΡ‚ΠΎΡŽ, Π²ΠΈΡ€Ρ–ΡˆΠ°Π±ΠΎ Π·Π°Π»ΠΈΡˆΠΈΡ‚ΠΈ Ρƒ ΠΌΠΎΠ²Ρ– ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Π½Ρ– Ρ‚ΠΈΠΏΠΈ? Π―ΠΊΡ‰ΠΎ всС ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ ΠΎΠ±'Ρ”ΠΊΡ‚ΠΎΠΌ, Ρ– ΠΌΠΈ Π²ΠΆΠ΅ ΠΌΠ°Ρ”ΠΌΠΎ класи-ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ, якими ΠΌΠΎΠΆΠ½Π° висловити всС, Ρ‰ΠΎ Π²ΠΈΡ€Π°ΠΆΠ°ΡŽΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²ΠΈ, Ρ‡ΠΎΠΌΡƒ Π²Π·Π°Π³Π°Π»Ρ– Π½Π΅ Π·Π°Π»ΠΈΡˆΠΈΡ‚ΠΈ Π² ΠΌΠΎΠ²Ρ– Ρ‚Ρ–Π»ΡŒΠΊΠΈ Ρ—Ρ…, Π° ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²ΠΈ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ? Π’Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄ΡŒ проста - ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŒ. ΠŸΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Π½Ρ– Ρ‚ΠΈΠΏΠΈ Ρ‚ΠΎΠΌΡƒ Ρ– Π½Π°Π·ΠΈΠ²Π°ΡŽΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Π½ΠΈΠΌΠΈ, Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ Π²ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π±Π°Π²Π»Π΅Π½Ρ– Π±Π°Π³Π°Ρ‚ΡŒΠΎΡ… "Π²Π°ΠΆΠΊΠΎΠ°Ρ‚Π»Π΅Ρ‚Π½ΠΈΡ…" особливостСй ΠΎΠ±'Ρ”ΠΊΡ‚Ρ–Π². Π’Π°ΠΊ, ΠΎΠ±'Ρ”ΠΊΡ‚ ΠΌΠ°Ρ” Π±Π°Π³Π°Ρ‚ΠΎ Π·Ρ€ΡƒΡ‡Π½ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ–Π², Π°Π»Π΅ ΠΆ Π²ΠΎΠ½ΠΈ Π½Π΅ Π·Π°Π²ΠΆΠ΄ΠΈ Ρ‚ΠΎΠ±Ρ– ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Ρ–. Π†Π½ΠΎΠ΄Ρ– Ρ‚ΠΎΠ±Ρ– ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ просто число 33, Ρ‡ΠΈ 2,62, Ρ‡ΠΈ значСння true/ false. Π£ ситуаціях, ΠΊΠΎΠ»ΠΈ всі ΠΏΠ΅Ρ€Π΅Π²Π°Π³ΠΈ ΠΎΠ±'Ρ”ΠΊΡ‚Ρ–Π² Π½Π΅ ΠΌΠ°ΡŽΡ‚ΡŒ значСння Ρ– Π½Π΅ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Ρ– для Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²ΠΈ Π²ΠΏΠΎΡ€Π°ΡŽΡ‚ΡŒΡΡ Ρ–Π· завданням Π½Π°Π±Π°Π³Π°Ρ‚ΠΎ ΠΊΡ€Π°Ρ‰Π΅.

Автоупаковка/автораспаковка

ΠžΠ΄Π½Ρ–Ρ”ΡŽ Π· особливостСй ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Ρ–Π² Ρ‚Π° Ρ—Ρ… класів-ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΎΠΊ Ρƒ Java Ρ” Π°Π²Ρ‚ΠΎΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°/автораспаковка (Autoboxing/Autounboxing) ΠžΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ, розпакування Ρ‚Π° Π·Π°ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° - 2 Π”Π°Π²Π°ΠΉ розбСрСмося Π· Ρ†ΠΈΠΌ поняттям. Π―ΠΊ ΠΌΠΈ Π· Ρ‚ΠΎΠ±ΠΎΡŽ Π²ΠΆΠ΅ дізналися Ρ€Π°Π½Ρ–ΡˆΠ΅, Java - ΠΎΠ±'Ρ”ΠΊΡ‚Π½ΠΎ-ΠΎΡ€Ρ–Ρ”Π½Ρ‚ΠΎΠ²Π°Π½Π° ΠΌΠΎΠ²Π°. Π¦Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Ρ”, Ρ‰ΠΎ всі ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, написані Java, ΡΠΊΠ»Π°Π΄Π°ΡŽΡ‚ΡŒΡΡ Π· ΠΎΠ±'Ρ”ΠΊΡ‚Ρ–Π². ΠŸΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²ΠΈ Ρ” ΠΎΠ±'Ρ”ΠΊΡ‚Π°ΠΌΠΈ. АлС ΠΏΡ€ΠΈ Ρ†ΡŒΠΎΠΌΡƒ Π·ΠΌΡ–Π½Π½ΠΎΡ— класу-ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½Π° Π½Π°Π΄Π°Π²Π°Ρ‚ΠΈ значСння ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΡƒ. Π¦Π΅ΠΉ процСс Π½Π°Π·ΠΈΠ²Π°Ρ”Ρ‚ΡŒΡΡ Π°Π²Ρ‚ΠΎΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΡŽ ( autoboxing ). Π’Π°ΠΊ само Π·ΠΌΡ–Π½Π½ΠΎΡ— ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΡƒ ΠΌΠΎΠΆΠ½Π° Π½Π°Π΄Π°Π²Π°Ρ‚ΠΈ ΠΎΠ±'Ρ”ΠΊΡ‚ класу-ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ. Π¦Π΅ΠΉ процСс Π½Π°Π·ΠΈΠ²Π°Ρ”Ρ‚ΡŒΡΡ авторапакуванням (autounboxing) . Наприклад:
public class Main {
   public static void main(String[] args) {
       int x = 7;
       Integer y = 111;
       x = y; // авторопакування
       y = x * 123; // Автоупаковка
   }
}
Π£ рядку 5 ΠΌΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΡŽΡ”ΠΌΠΎ ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Ρƒ x значСння y, який Ρ” ΠΎΠ±'Ρ”ΠΊΡ‚ΠΎΠΌ класу-ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ Integer. Π―ΠΊ Π±Π°Ρ‡ΠΈΡˆ, ніяких Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΈΡ… Π΄Ρ–ΠΉ для Ρ†ΡŒΠΎΠ³ΠΎ Π½Π΅ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ: компілятор Π·Π½Π°Ρ” Ρ‰ΠΎ intΡ– Integer, ΠΏΠΎ суті, Ρ‚Π΅ самС . Π¦Π΅ Ρ– Ρ” авторопакування. Π’Π°ΠΊΠΎΠΆ Π²Ρ–Π΄Π±ΡƒΠ²Π°Ρ”Ρ‚ΡŒΡΡ Ρ– Π°Π²Ρ‚ΠΎΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π² рядку 6: ΠΎΠ±'Ρ”ΠΊΡ‚Ρƒ y Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΡŽΡ”Ρ‚ΡŒΡΡ значСння ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Ρ–Π² (Ρ…*123). Π¦Π΅ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ Π°Π²Ρ‚ΠΎΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ. Π‘Π°ΠΌΠ΅ Ρ‚ΠΎΠΌΡƒ Π΄ΠΎΠ΄Π°Ρ”Ρ‚ΡŒΡΡ слово "Π°Π²Ρ‚ΠΎ": для присвоєння посилань-ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Ρ–Π² ΠΎΠ±'Ρ”ΠΊΡ‚Π°ΠΌ Ρ—Ρ… класів-ΠΎΠ±Π΅Ρ€Ρ‚ΠΎΠΊ (Ρ– Π½Π°Π²ΠΏΠ°ΠΊΠΈ) Π½Π΅ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π½Ρ–Ρ‡ΠΎΠ³ΠΎ Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ, всС Π²Ρ–Π΄Π±ΡƒΠ²Π°Ρ”Ρ‚ΡŒΡΡ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ . Π—Ρ€ΡƒΡ‡Π½ΠΎ, ΠΏΡ€Π°Π²Π΄Π°? :) Π©Π΅ ΠΎΠ΄Π½Π° Π΄ΡƒΠΆΠ΅ Π²Π΅Π»ΠΈΠΊΠ° Π·Ρ€ΡƒΡ‡Π½Ρ–ΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ/автораспаковки ΠΏΡ€ΠΎΡΠ²Π»ΡΡ”Ρ‚ΡŒΡΡ Π² Ρ€ΠΎΠ±ΠΎΡ‚Ρ– ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ–Π². Π‘ΠΏΡ€Π°Π²Π° Π² Ρ‚ΠΎΠΌΡƒ, Ρ‰ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ–Π² Ρ‚Π΅ΠΆ ΠΏΡ–Π΄Π»ΡΠ³Π°ΡŽΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡƒΠΏΠ°ΠΊΠΎΠ²Ρ†Ρ– Ρ‚Π° Π°Π²Ρ‚ΠΎΡƒΠΏΠ°ΠΊΠΎΠ²Ρ†Ρ–. Π†, Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄, якщо ΠΎΠ΄ΠΈΠ½ Ρ–Π· Π½ΠΈΡ… ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ” Π½Π° Π²Ρ…Ρ–Π΄ Π΄Π²Π° ΠΎΠ±'Ρ”ΠΊΡ‚ΠΈ Integerβ€” ΠΌΠΈ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΠΈ Ρ‚ΡƒΠ΄ΠΈ Π·Π²ΠΈΡ‡Π°ΠΉΠ½Ρ– ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²ΠΈ int!
public class Main {
   public static void main(String[] args) {

       printNumber(7);//Π—Π²ΠΈΡ‡Π°ΠΉΠ½ΠΈΠΉ int, Π½Π°Π²Ρ–Ρ‚ΡŒ Π±Π΅Π· Π·ΠΌΡ–Π½Π½ΠΎΡ—
   }

   public static void printNumber(Integer i) {
       System.out.println("Π’ΠΈ Π²Π²Π΅Π»ΠΈ число" + i);
   }
}
Висновок: Π’ΠΈ Π²Π²Π΅Π»ΠΈ число 7 Π’Π°ΠΊ само ΠΏΡ€Π°Ρ†ΡŽΡ” Ρ– Π½Π°Π²ΠΏΠ°ΠΊΠΈ:
public class Main {
   public static void main(String[] args) {

       printNumber(new Integer(632));
   }

   public static void printNumber(int i) {
       System.out.println("Π’ΠΈ Π²Π²Π΅Π»ΠΈ число" + i);
   }
}
Π’Π°ΠΆΠ»ΠΈΠ²ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΏΡ€ΠΎ який ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ ΠΏΠ°ΠΌ'ятати: Π°Π²Ρ‚ΠΎΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Ρ‚Π° розпакування Π½Π΅ ΠΏΡ€Π°Ρ†ΡŽΡŽΡ‚ΡŒ для масивів !
public class Main {
   public static void main(String[] args) {

       int[] i = {1,2,3,4,5};

       printArray(i);//ΠΏΠΎΠΌΠΈΠ»ΠΊΠ°, Π½Π΅ ΠΊΠΎΠΌΠΏΡ–Π»ΡŽΡ”Ρ‚ΡŒΡΡ!
   }

   public static void printArray(Integer[] arr) {
       System.out.println(Arrays.toString(arr));
   }
}
Π‘ΠΏΡ€ΠΎΠ±Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΠΈ масив ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Ρ–Π² ΠΌΠ΅Ρ‚ΠΎΠ΄, який ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ” Π½Π° Π²Ρ…Ρ–Π΄ масив ΠΎΠ±'Ρ”ΠΊΡ‚Ρ–Π², Π²ΠΈΠΊΠ»ΠΈΡ‡Π΅ ΠΏΠΎΠΌΠΈΠ»ΠΊΡƒ компіляції. ΠΠ°ΡΠ°ΠΌΠΊΡ–Π½Π΅Ρ†ΡŒ, Ρ‰Π΅ Ρ€Π°Π· ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ порівняємо ΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²ΠΈ Ρ‚Π° ΠΎΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ .
  • ΠΌΠ°ΡŽΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²Π°Π³Ρƒ Ρƒ продуктивності
ΠžΠ±Π³ΠΎΡ€Ρ‚ΠΊΠΈ:
  • Π”ΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ΡŒ Π½Π΅ ΠΏΠΎΡ€ΡƒΡˆΡƒΠ²Π°Ρ‚ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ β€œΠ²ΡΠ΅ Ρ” ΠΎΠ±'єктом”, завдяки Ρ‡ΠΎΠΌΡƒ Ρ†ΠΈΡ„Ρ€ΠΈ, символи Ρ‚Π° Π±ΡƒΠ»Π΅Π²Ρ– значСння true/false Π½Π΅ Π²ΠΈΠΏΠ°Π΄Π°ΡŽΡ‚ΡŒ Ρ–Π· Ρ†Ρ–Ρ”Ρ— ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†Ρ–Ρ—
  • Π ΠΎΠ·ΡˆΠΈΡ€ΡŽΡŽΡ‚ΡŒ моТливості Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ Π· Ρ†ΠΈΠΌΠΈ значСннями, Π½Π°Π΄Π°ΡŽΡ‡ΠΈ Π·Ρ€ΡƒΡ‡Π½Ρ– ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Ρ‚Π° поля
  • НСобхідно, ΠΊΠΎΠ»ΠΈ якийсь ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅ ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈ Π²ΠΈΠΊΠ»ΡŽΡ‡Π½ΠΎ Π· ΠΎΠ±'Ρ”ΠΊΡ‚Π°ΠΌΠΈ
ΠšΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Ρ–
  • популярні
  • Π½ΠΎΠ²Ρ–
  • старі
Π©ΠΎΠ± Π·Π°Π»ΠΈΡˆΠΈΡ‚ΠΈ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€, ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π²Π²Ρ–ΠΉΡ‚ΠΈ Π² систСму
Для Ρ†Ρ–Ρ”Ρ— сторінки Π½Π΅ΠΌΠ°Ρ” ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Ρ–Π².