Junior
Сиз шилтемелердин түрлөрүн негизги жана тескерисинче кантип которосуз?
sobes.tech AI
AIден жооп
Байланыштуу түрлөр үчүн (мисалы, Integer, Double, Boolean) префикссиз (int, double, boolean) түргө автоматтык түрдө которуу (unboxing) колдонулат. JVM зарылчылык туулганда байланыштуу түрдү анын префикссиз эквивалентине автоматтык түрдө айлантат:
// Префикссиз түр
int primitiveInt = 10;
// Байланыштуу түрдү префикссизден түзүү (auto-boxing)
Integer objectInt = primitiveInt; // `int`тен `Integer`ге автоматтык которуу
// Байланыштуу түрдү кайра префикссизге айлантуу (auto-unboxing)
int newPrimitiveInt = objectInt; // `Integer`ден `int`ке автоматтык которуу
Префикссиз түрдөн байланыштуу түргө которууда (auto-boxing) JVM автоматтык түрдө префикссиз мааниден байланыштуу түрдүн объектисин түзөт:
// Префикссиз түр
double primitiveDouble = 3.14;
// Байланыштуу түрдү префикссизден түзүү (auto-boxing)
Double objectDouble = primitiveDouble; // `double`тен `Double`ге автоматтык которуу
// Байланыштуу түрдү кайра префикссизге айлантуу (auto-unboxing)
double newPrimitiveDouble = objectDouble; // `Double`ден `double`ге автоматтык которуу
Маанилүү, байланыштуу түрдөн префикссизге айланууда (unboxing) эгер байланыштуу түр null болсо, NullPointerException чыгышы мүмкүн.
Ошентип, авто-упактоо/распактоо бул процессти кыйла жөнөкөйлөттү:
// Авто-упактоо/распактоо алдынкы так аныктоо
Integer explicitInteger = new Integer(25); // Конструктор колдонуу (эскирген)
int explicitInt = explicitInteger.intValue(); // `intValue()` методун колдонуу
// `valueOf()` статикалык методун колдонуу (жакшыраак)
Integer valueOfInteger = Integer.valueOf(50);
int valueOfInt = valueOfInteger.intValue();