المتغيرات وأنواع البيانات الأولية
المتغيرات وأنواع البيانات الأولية
كل برنامج يحتاج إلى تخزين البيانات — عمر مستخدم، ورصيد بنكي، ودرجة امتحان. في Java تُخزَّن البيانات في متغيرات، ولكل متغير نوع يُخبر المُصرِّف بنوع البيانات التي يحتوي عليها. Java لغة ذات تحقق ثابت للأنواع، بمعنى أن النوع محدد وقت الترجمة ولا يمكن تغييره. يُغطّي هذا الدرس الأنواع الأولية الثمانية المدمجة في Java — وهي أصغر وحدات تخزين القيم في اللغة.
ما هو المتغير؟
المتغير هو خانة مسمّاة في الذاكرة. التصريح بمتغير يحجز تلك الخانة؛ والتهيئة تضع فيها قيمة. الصياغة هي:
تشترط Java على المتغيرات المحلية (داخل الدوال) أن تُهيَّأ صراحةً قبل قراءتها. سيرفض المُصرِّف تجميع أي كود قد يقرأ متغيرًا محليًا غير مُهيَّأ.
الأنواع الأولية الثمانية
تمتلك Java بالضبط ثمانية أنواع أولية، مقسَّمة إلى أربع فئات:
1. أنواع الأعداد الصحيحة
تُخزّن هذه الأنواع الأعداد الكاملة. الفارق يكمن في حجم الخانة في الذاكرة وبالتالي مدى القيم التي تسعها.
byte— 8 بت. المدى: -128 إلى 127.short— 16 بت. المدى: -32,768 إلى 32,767.int— 32 بت. المدى: -2,147,483,648 إلى 2,147,483,647. النوع الصحيح الاعتيادي.long— 64 بت. المدى: نحو -9.2 × 10¹⁸ إلى 9.2 × 10¹⁸. اللاحقةLمطلوبة لثوابتlong.
int افتراضيًا. الجأ إلى long فقط حين قد تتجاوز القيمة نحو 2.1 مليار (أحجام الملفات، الطوابع الزمنية بالميلي ثانية، المسافات الفلكية). استخدم byte أو short فقط عند العمل مع البيانات الثنائية أو المصفوفات الضخمة جدًا حيث الذاكرة حرجة.
2. أنواع الأعداد العشرية
تُخزّن هذه الأنواع الأعداد ذات الجزء العشري وفق معيار IEEE 754.
float— 32 بت، نحو 7 أرقام عشرية ذات معنى. اللاحقةfأوFمطلوبة.double— 64 بت، نحو 15 رقمًا عشريًا ذا معنى. النوع العشري الاعتيادي. لا يحتاج لاحقة؛ ثابت مثل3.14هوdoubleبالفعل.
0.1 + 0.2 لا يساوي 0.3 بالضبط في الفاصلة العائمة الثنائية. للحسابات المالية استخدم دائمًا java.math.BigDecimal.
3. نوع الحرف
char يُخزّن حرفًا واحدًا من Unicode في 16 بت (UTF-16). تُحاط ثوابت الحروف بـعلامات اقتباس مفردة.
char هو في الأصل عدد صحيح غير منفي بعرض 16 بت (0–65,535) يمثّل نقطة كود Unicode. يمكن إجراء عمليات حسابية عليه، وإن كان ذلك نادر الفائدة: 'A' + 1 يُعطي 66 أي 'B'.
4. نوع المنطق البولياني
boolean يحمل بالضبط إحدى قيمتين: true أو false. وهو نتيجة كل مقارنة وعملية منطقية.
القيم الافتراضية
حين يُصرَّح عن نوع أولي كـحقل في الصف (ليس داخل دالة) دون تهيئة صريحة، تُسنده Java قيمة آمنة افتراضية:
byte،short،int،long→0float،double→0.0char→' '(محرف الفراغ الصفري)boolean→false
int count; داخل دالة ثم حاولت طباعتها دون إسناد قيمة، لن يُجمَّع الكود. هذا قرار أمان متعمد — Java تمنعك من قراءة بيانات عشوائية خطأً.
الثوابت الحرفية بالتفصيل
الثابت الحرفي (literal) هو قيمة مكتوبة مباشرةً في الكود المصدري. تدعم Java عدة صيغ لتُحسّن قراءة الكود:
مثال شامل
هذا برنامج صغير مكتفٍ بذاته يُصرِّح عن متغير واحد من كل نوع أولي ويطبعه:
الخلاصة
تُغطّي الأنواع الأولية الثمانية في Java كل فئة قيم أساسية: الأعداد الكاملة (byte، short، int، long)، الأعداد العشرية (float، double)، الحرف المفرد (char)، وقيمة الصواب أو الخطأ (boolean). لكل نوع حجم ثابت ومدى محدد وقيمة افتراضية لحقول الصفوف. عند الشك، استخدم int للأعداد الصحيحة وdouble للعشرية — فهما النوعان الاعتياديان في حسابات Java. في الدرس القادم ستجمع هذه القيم بالمعاملات والتعابير لإجراء حسابات حقيقية.