المتغيرات وأنواع البيانات في Java
Java لغة صارمة في التعامل مع البيانات: يجب أن تعلن نوع كل متغير قبل استخدامه، والمترجم يراجع كل سطر قبل التشغيل. قد يبدو هذا متعباً في البداية، لكنه السبب في أن Java تُستخدم في الأنظمة الكبيرة كالبنوك وتطبيقات الشركات: الأخطاء تُكتشف مبكراً قبل أن تصل للمستخدمين. في هذا الدرس ستتعلم المتغيرات وأنواعها بالتفصيل.
تعريف المتغير
Section titled “تعريف المتغير”String name = "سارة";int points = 10;points = points + 5;System.out.println(name + " لديها " + points + " نقطة");سارة لديها 15 نقطةالصيغة دائماً: النوع ثم الاسم ثم = ثم القيمة، وفي النهاية فاصلة منقوطة ;.
تخيّل المتغيرات مثل أدراج مكتب لكل درج نوع محدد: درج للأوراق، ودرج للأقلام. لا تستطيع وضع قلم في درج الأوراق، وكذلك لا تستطيع وضع نص في متغير من نوع int.
لدمج النصوص مع القيم في Java نستخدم علامة +، كما في السطر الأخير.
الأنواع البدائية
Section titled “الأنواع البدائية”Java فيها أنواع بدائية (Primitive Types) بسيطة وسريعة، تُكتب بحروف صغيرة:
int students = 30;double price = 12.5;boolean isOpen = true;char grade = 'A';long big = 7_000_000_000L;| النوع | يخزن | ملاحظة |
|---|---|---|
int |
أعداد صحيحة | حتى 2 مليار تقريباً |
long |
أعداد صحيحة كبيرة جداً | ينتهي الرقم بحرف L |
double |
أعداد عشرية | الأشهر للكسور |
boolean |
true أو false |
|
char |
حرف واحد | بين علامتين مفردتين 'A' |
والشرطة السفلية في 7_000_000_000L لتسهيل القراءة فقط.
النوع String
Section titled “النوع String”النصوص في Java من نوع String بحرف كبير، لأنه ليس نوعاً بدائياً بل كلاس، وستفهم معنى ذلك في درس الكلاسات. يُكتب النص بين علامتين مزدوجتين دائماً: "مرحباً". أما العلامتان المفردتان فللحرف الواحد فقط من نوع char.
العمليات الحسابية
Section titled “العمليات الحسابية”System.out.println(10 / 4);System.out.println(10.0 / 4);System.out.println(10 % 4);22.52قسمة عددين صحيحين تعطي عدداً صحيحاً ويُحذف الكسر. إذا أردت الكسر، اجعل أحد الطرفين عشرياً. والعامل % يعطي باقي القسمة.
var و final
Section titled “var و final”منذ Java 10 يمكنك استخدام var للمتغيرات المحلية، فيستنتج المترجم النوع من القيمة:
var city = "القاهرة"; // Stringfinal double TAX = 0.14; // ثابت لا يتغيرvar: النوع يُستنتج، لكنه يبقى ثابتاً بعد ذلك.final: قيمة لا يمكن تغييرها بعد إسنادها. والعُرف أن تُكتب أسماء الثوابت بحروف كبيرة مثلTAX.
التحويل بين الأنواع
Section titled “التحويل بين الأنواع”التحويل التلقائي يحدث عندما تنقل قيمة لنوع «أوسع» دون فقدان بيانات:
int a = 7;double d = a; // 7.0التحويل الصريح (Casting) مطلوب عندما قد تفقد بيانات، وتكتبه بين قوسين:
double avg = 7.9;int rounded = (int) avg;System.out.println(rounded);7لاحظ: (int) تقطع الكسر ولا تقرّب، فأصبحت 7.9 تساوي 7.
من نص إلى رقم:
int n = Integer.parseInt("25");System.out.println(n + 5);System.out.println("25" + 5);System.out.println(Double.parseDouble("2.5") * 2);302555.0انتبه للسطر الثاني: "25" + 5 تعطي النص "255"! لأن + مع نص تعني الدمج لا الجمع.
تنسيق المخرجات
Section titled “تنسيق المخرجات”printf و String.format تعطيانك تحكماً أدق في شكل الأرقام:
System.out.printf("السعر: %.2f جنيه%n", 12.5);System.out.println(String.format("%s عمرها %d سنة", "منى", 13));السعر: 12.50 جنيهمنى عمرها 13 سنة%sمكان نص، و%dمكان عدد صحيح، و%.2fمكان عدد عشري برقمين بعد الفاصلة.%nسطر جديد.
جرّب بنفسك
Section titled “جرّب بنفسك”public class Main { public static void main(String[] args) { String productName = "سماعة"; double unitPrice = 150.0; int quantity = 2; double total = unitPrice * quantity;
System.out.println("المنتج: " + productName); System.out.println("الإجمالي: " + total + " جنيه"); }}المنتج: سماعةالإجمالي: 300.0 جنيهتحدٍّ: أضف ثابتاً final double TAX = 0.14; واطبع الإجمالي بعد الضريبة برقمين عشريين باستخدام printf.
أخطاء شائعة
Section titled “أخطاء شائعة”- نسيان الفاصلة المنقوطة: خطأ
';' expected. كل أمر في Java ينتهي بـ;. - نوع غير متطابق:
int x = "5";خطأincompatible types: String cannot be converted to int. - الخلط بين “” و ‘’:
char c = "A";خطأ. الحرف الواحد بعلامتين مفردتين.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ما ناتج System.out.println((int) 9.8);؟
التحويل الصريح إلى int يقطع الجزء العشري ولا يقرّب، فالنتيجة 9.
سؤال
ما ناتج System.out.println("3" + 4);؟
عندما يكون أحد طرفي + نصاً، تصبح العملية دمجاً، فالنتيجة النص 34.
الخلاصة
Section titled “الخلاصة”- كل متغير في Java له نوع معلن:
intوlongوdoubleوbooleanوcharبدائية، وStringكلاس. varيستنتج النوع، وfinalللثوابت.- قسمة الأعداد الصحيحة تحذف الكسر، و
(int)تقطع ولا تقرّب. Integer.parseIntوDouble.parseDoubleلتحويل النصوص إلى أرقام.printfمع%sو%dو%.2fلتنسيق المخرجات.