Java-da avtomatik qutulama (Autoboxing) və qutudan çıxarma (Unboxing) fikri nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Autoboxing və Unboxing, əsasən, primitiv tiplər (məsələn, int, char) və onların müvafiq qablaşdırma sinfləri (Integer, Character) arasında avtomatik çevirmələrdir.
Autoboxing:
- Bir primitiv tip avtomatik olaraq müvafiq qablaşdırma sinfi obyektinə çevrilir.
- Bu, primitiv dəyərləri qablaşdırma sinfi dəyişənlərinə təyin etməyə, primitiv dəyərləri qablaşdırma sinfi obyektləri gözləyən metodlara keçirməyə və primitiv dəyərləri obyektlər saxlayan kolleksiyalara əlavə etməyə imkan verir.
// Autoboxing
int primitiveInt = 10;
Integer wrapperInt = primitiveInt; // Primitiv int avtomatik olaraq Integer-ə çevrilir
// Kolleksiyada istifadə
List<Integer> integerList = new ArrayList<>();
integerList.add(20); // 20 primitiv int avtomatik olaraq Integer-ə çevrilir
Unboxing:
- Bir qablaşdırma sinfi obyekti avtomatik olaraq müvafiq primitiv tura çevrilir.
- Bu, qablaşdırma sinfi obyektlərini primitiv dəyişənlərə təyin etməyə, qablaşdırma sinfi obyektlərini primitiv dəyərlər gözləyən metodlara keçirməyə və qablaşdırma sinfi obyektlərini aritmetik əməliyyatlarda istifadə etməyə imkan verir.
// Unboxing
Integer wrapperInt = 100;
int primitiveInt = wrapperInt; // Integer obyekti avtomatik olaraq int-ə çevrilir
// Aritmetik əməliyyatda istifadə
Integer a = 5; // Autoboxing
Integer b = 3; // Autoboxing
int sum = a + b; // a və b-nin unboxing ilə toplaması
Fikir:
Autoboxing və Unboxing-un əsas məqsədi kodu sadələşdirmək, onu daha oxunaqlı etmək və açıq şəkildə qablaşdırma obyektləri yaratmaq və ya primitiv dəyərləri çıxarma ehtiyacını azaltmaqdır. Bu, primitiv tipləri obyektlərin tələb olunduğu kontekstlərdə istifadə etməyə imkan verir, konstruktordan və ya intValue(), doubleValue() kimi metodlardan istifadə etmədən.
Əhəmiyyətlidir ki, Autoboxing və Unboxing əlavə obyektlər yaradır və xüsusən dövrlərdə və ya intensiv istifadə zamanı performansa az da olsa təsir göstərə bilər. Həmçinin, Unboxing zamanı qablaşdırma obyektlərində null dəyərlər NullPointerException-a səbəb ola bilər.