0Pricing
Java Academy · درس

الأنواع البدائية مقابل أنواع Wrapper

Integer وDouble وBoolean وأشباهها

الأنواع البدائية مقابل أنواع Wrapper درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.

عالما القيم

تحتوي Java على أنواع بدائية مثل int وdouble وboolean، وهي تخزّن القيم الخام مباشرةً. كما تحتوي على أصناف مغلِّفة مثل Integer وDouble وBoolean، وهي تغلّف تلك القيم داخل كائنات.

الأنواع البدائية سريعة وخفيفة. أما الأصناف المغلِّفة فهي كائنات كاملة يمكن وضعها في المجموعات ويمكن أن تكون null.

الأنواع البدائية الثمانية

تعرّف Java ثمانية أنواع بدائية بالضبط:

  • byte وshort وint وlong للأعداد الصحيحة
  • float وdouble للأعداد العشرية
  • char لحرف واحد
  • boolean للقيمتين true وfalse

ويقابل كل نوع منها صنف مغلِّف في الحزمة java.lang.

أسماء الأصناف المغلِّفة المطابقة

تُكتب معظم أسماء الأصناف المغلِّفة بجعل الحرف الأول من النوع البدائي كبيرًا، لكن اثنين منها يختلفان:

  • يصبح int هو Integer
  • يصبح char هو Character
  • يصبح boolean هو Boolean، ويصبح double هو Double، وهكذا

دعونا نطبع بعض الأصناف المغلِّفة.

public class Main {
    public static void main(String[] args) {
        Integer count = 42;
        Double price = 9.99;
        Boolean active = true;
        Character grade = 'A';
        System.out.println(count);
        System.out.println(price);
        System.out.println(active);
        System.out.println(grade);
    }
}

الأصناف المغلِّفة كائنات

يخزّن النوع البدائي قيمةً، بينما الصنف المغلِّف هو مرجع إلى كائن، لذا يمكنه أن يشير إلى لا شيء على الإطلاق باستخدام null.

يجعل ذلك الأصناف المغلِّفة مفيدة عندما تكون القيمة مفقودة، مثل عمود في قاعدة بيانات يسمح بالقيمة NULL.

public class Main {
    public static void main(String[] args) {
        Integer missing = null;
        int present = 5;
        System.out.println(missing);
        System.out.println(present);
    }
}

ثوابت مفيدة

توفّر الأصناف المغلِّفة ثوابت مفيدة. ويعطي Integer.MAX_VALUE وInteger.MIN_VALUE أكبر قيمتي int وأصغرهما.

وهذا أسهل بكثير من حفظ الأرقام بنفسك.

public class Main {
    public static void main(String[] args) {
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Long.MAX_VALUE);
    }
}

أساليب مساعدة

تُعد الأصناف المغلِّفة أيضًا صناديق أدوات تحتوي على أساليب مساعدة ساكنة. فعلى سبيل المثال، يعرض Integer.toBinaryString عددًا بالأساس 2، بينما يعيد Integer.max القيمة الأكبر من قيمتين.

public class Main {
    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(10));
        System.out.println(Integer.max(7, 3));
        System.out.println(Integer.toHexString(255));
    }
}

لماذا تحتاج المجموعات إلى أصناف مغلِّفة

تعمل الأنواع العامة في Java مع الكائنات فقط، وليس مع الأنواع البدائية. ولا يمكنك كتابة List<int>.

بل تستخدم List<Integer>. إذ يجعل الصنف المغلِّف القيمة البدائية ملائمة لعالم الكائنات الذي تتطلبه المجموعات.

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(10);
        numbers.add(20);
        System.out.println(numbers);
    }
}

مقارنة قيم الأصناف المغلِّفة

لمقارنة القيمة العددية الموجودة داخل صنفين مغلِّفين، استخدم .equals() أو .compareTo()، وليس عوامل الرياضيات على الكائنات نفسها.

يعيد compareTo عددًا سالبًا أو صفرًا أو عددًا موجبًا.

public class Main {
    public static void main(String[] args) {
        Integer a = 100;
        Integer b = 200;
        System.out.println(a.equals(b));
        System.out.println(a.compareTo(b));
    }
}

الذاكرة والأداء

تستخدم الأنواع البدائية ذاكرة أقل وتعمل بسرعة أكبر لعدم وجود كلفة إضافية للكائنات. فالقيمة int الواحدة ليست إلا 4 بايتات من البيانات الخام.

ويحمل الكائن المغلِّف معلومات إضافية في ترويسته. لذلك يُفضَّل استخدام الأنواع البدائية في الحلقات المكثفة التي تعالج ملايين القيم.

تختلف القيم الافتراضية

تكون القيمة الافتراضية لحقل بدائي لم تتم تهيئته شبيهة بالصفر: فقيمة int هي 0، وقيمة boolean هي false.

أما الحقل المغلِّف غير المُهيَّأ فقيمته الافتراضية هي null. ويصبح هذا الفرق مهمًا عندما تحاول استخدام القيمة لاحقًا.

public class Main {
    static int primitiveField;
    static Integer wrapperField;

    public static void main(String[] args) {
        System.out.println(primitiveField);
        System.out.println(wrapperField);
    }
}

الاختيار بينهما

القاعدة البسيطة هي: استخدم الأنواع البدائية افتراضيًا لتحصل على أداء ووضوح أفضل. وانتقل إلى صنف مغلِّف عندما تحتاج إلى عنصر في مجموعة، أو نوع عام، أو إمكانية تمثيل قيمة مفقودة باستخدام null.

تحقق سريع

اختبر مدى فهمك للأنواع البدائية والأصناف المغلِّفة.

خلاصة

لقد تعلمت الفرق بين الأنواع البدائية والأصناف المغلِّفة:

  • تقابل الأنواع البدائية الثمانية ثمانية أصناف مغلِّفة، مثل Integer وDouble
  • الأصناف المغلِّفة كائنات، ويمكن أن تكون null، كما يمكن وضعها في المجموعات
  • الأنواع البدائية أسرع وأخف، لذا استخدمها افتراضيًا
  • توفّر الأصناف المغلِّفة أيضًا ثوابت وأساليب مساعدة مفيدة

الأسئلة الشائعة

هل درس «الأنواع البدائية مقابل أنواع Wrapper» مجاني؟

نعم — نص درس «الأنواع البدائية مقابل أنواع Wrapper» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.

ماذا ستتعلم في «الأنواع البدائية مقابل أنواع Wrapper»؟

Integer وDouble وBoolean وأشباهها تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «الأنواع البدائية مقابل أنواع Wrapper»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الأنواع البدائية مقابل أنواع Wrapper
  2. Autoboxing وUnboxing
  3. Parsing وValueof
  4. مخاطر Autoboxing
← العودة إلى Java Academy