تخطَّ إلى المحتوى

Autoboxing / Unboxing

التحويل التلقائي بين الأنواع Autoboxing / Unboxing

Autoboxing تحول نوع بدائي لصنف مغلف تلقائيًا، وUnboxing العكس — تحدث تلقائيًا منذ Java 5.

Java تحوّل تلقائيًا بين الأنواع البدائية (int) والمغلفة (Integer) عند الحاجة. Autoboxing: int → Integer. Unboxing: Integer → int. تحدث في المجموعات والمعاملات والاعياد.

الصياغة

Integer a = 5;      // autoboxing: int → Integer
int b = a;          // unboxing: Integer → int

List<Integer> list = new ArrayList<>();
list.add(10);       // autoboxing
int val = list.get(0); // unboxing

📄 مثال

import java.util.*;

// Autoboxing في المجموعات:
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(42);       // int → Integer (autoboxing)
numbers.add(100);      // int → Integer

int first = numbers.get(0); // Integer → int (unboxing)

// في المعاملات:
Integer x = 5;
Integer y = 10;
Integer sum = x + y; // x و y يتم unboxing ثم addition ثم autoboxing
System.out.println(sum); // 15

// مع Collections:
Map<String, Integer> map = new HashMap<>();
map.put("score", 95);
int score = map.get("score"); // unboxing مباشر

أهم النقاط

العنصرالوظيفة
autoboxingتحويل تلقائي من نوع بدائي لصنف مغلف
unboxingتحويل تلقائي من صنف مغلف لنوع بدائي
cacheInteger من -128 إلى 127 يتم تخزينها مسبقًا cache

💡 نصائح عملية

  • لا تحاول التحكم يدويًا — Java تتعامل تلقائيًا في معظم الحالات
  • في الحلقات الكبيرة، استخدم الأنواع البدائية مباشرة لتقليل overhead

⚠️ أخطاء شائعة

  • Integer a = 128; Integer b = 128; a == b يُرجع false — لأن القيم فوق 127 خارج cache
  • NullPointerException عند unboxing null: int x = (Integer) null;

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVA الكامل بالعربي.