Junior
Ինչպե՞ս կփոխարկեք հղման տիպերը՝ դեպի հիմնական և հակառակը։
sobes.tech AI
Պատասխան AI-ից
Հղումային տիպերի (օրինակ՝ Integer, Double, Boolean) դեպքում օգտագործվում է ավտո-ռասպակոավորումը (unboxing)՝ int, double, boolean։ JVM-ը ավտոմատ կերպով փոխում է հղումային տիպը նրա պրիմիտիվ համարժեքին անհրաժեշտության դեպքում:
// Պրիմիտիվ տիպ
int primitiveInt = 10;
// Հղումային տիպի ստեղծում պրիմիտիվից (auto-boxing)
Integer objectInt = primitiveInt; // Ավտոմատ փոխարկում `int`-ից `Integer`
// Հղումային տիպի վերածում պրիմիտիվի (auto-unboxing)
int newPrimitiveInt = objectInt; // Ավտոմատ փոխարկում `Integer`-ից `int`
Պրիմիտիվ տիպերից հղումային տիպեր տեղափոխելու համար օգտագործվում է ավտո-պակոավորումը (autoboxing): JVM-ը ավտոմատ կերպով ստեղծում է հղումային տիպի օբյեկտ պրիմիտիվ արժեքից:
// Պրիմիտիվ տիպ
double primitiveDouble = 3.14;
// Հղումային տիպի ստեղծում պրիմիտիվից (auto-boxing)
Double objectDouble = primitiveDouble; // Ավտոմատ փոխարկում `double`-ից `Double`
// Հղումային տիպի վերածում պրիմիտիվի (auto-unboxing)
double newPrimitiveDouble = objectDouble; // Ավտոմատ փոխարկում `Double`-ից `double`
Կարևոր է հիշել, որ հղումային տիպից պրիմիտիվ փոխարկման ժամանակ (unboxing) կարող է առաջանալ NullPointerException, եթե հղումային տիպը ունի null արժեք:
Այնպես որ, ավտո-պակոավորումը/ռասպակոավորումը զգալիորեն պարզեցրել է այս գործընթացը:
// Մանրամասն փոխարկում մինչև ավտո-պակոավորումը/ռասպակոավորումը
Integer explicitInteger = new Integer(25); // Օգտագործում է կոնստրուկտոր (հնացած)
int explicitInt = explicitInteger.intValue(); // Օգտագործում `intValue()` մեթոդը
// `valueOf()` ստատիկ մեթոդի օգտագործում (առաջնահերթ)
Integer valueOfInteger = Integer.valueOf(50);
int valueOfInt = valueOfInteger.intValue();