المعاملات والتعبيرات
المعاملات والتعبيرات
التعبير (expression) هو أي تركيب من متغيرات وقيم ومعاملات (operators) يُقيّمه Java لينتج قيمة واحدة. فهم المعاملات أمر جوهري لأن كل سطر مفيد تقريبًا في Java يحتوي على معامل واحد على الأقل. في هذا الدرس ستتعلم كل فئة من المعاملات، وترى مثالًا صغيرًا قابلًا للتشغيل، وتكتشف كيف يقرر Java أيّ عملية يؤدّي أولًا عند وجود عدة معاملات معًا.
معاملات الحساب (Arithmetic Operators)
تُجري معاملات الحساب عمليات رياضية على الأنواع الرقمية مثل int وdouble.
17 / 5 تعطي 3 لا 3.4. إذا أردت نتيجة عشرية فيجب أن يكون أحد المعاملَين من نوع double: 17.0 / 5 تعطي 3.4.
يُعيد معامل باقي القسمة % ما تبقّى بعد القسمة. وهو مفيد جدًا — التحقق من أن عددًا زوجي (n % 2 == 0)، والتدوير عبر مؤشرات المصفوفة، وغير ذلك كثير.
معاملات المقارنة (Relational Operators)
تقارن معاملات المقارنة بين قيمتين وتُنتج دائمًا نتيجة boolean (true أو false). وهي عماد كل جملة if وشرط حلقة.
= تُسنِد قيمة. علامة المساواة المزدوجة == تختبر التساوي. كتابة if (x = 5) بدلًا من if (x == 5) خطأ شائع — لحسن الحظ يرصده Java كخطأ في الترجمة للأنواع غير المنطقية.
المعاملات المنطقية (Logical Operators)
تجمع المعاملات المنطقية قيم boolean أو تعكسها. تستخدمها لبناء شروط مركّبة.
يستخدم Java التقييم المختصر (short-circuit evaluation) مع && و||. مع &&: إذا كان الطرف الأيسر false فلا يُقيَّم الطرف الأيمن أبدًا. مع ||: إذا كان الطرف الأيسر true فيُتخطّى الطرف الأيمن. هذا مهم عندما يملك الطرف الأيمن تأثيرًا جانبيًا أو قد يُلقي استثناءً.
if (user != null && user.isActive()) — بفضل التقييم المختصر، لا يُستدعى user.isActive() إلا عندما يكون user غير null.
معاملات الإسناد (Assignment Operators)
معامل الإسناد الأساسي = يخزّن قيمة في متغير. يوفّر Java أيضًا معاملات الإسناد المركّبة التي تجمع عملية حسابية مع الإسناد، مما يجعل الكود أقصر وأوضح.
معاملات الزيادة والنقصان (Increment & Decrement)
لأن إضافة أو طرح 1 شائع جدًا، يوفّر Java معاملَين مخصَّصَين: ++ (زيادة) و-- (نقصان). كل منهما بصيغتين: بادئة (prefix) (المعامل قبل المتغير) ولاحقة (postfix) (المعامل بعد المتغير).
++ أو -- كجملة مستقلة وليس ضمن تعبير أكبر، تتصرف البادئة واللاحقة بشكل متطابق. الفرق يظهر فقط عندما تُستخدم القيمة الناتجة عن التعبير فورًا — مثل تمريرها وسيطةً لدالة أو جانبًا أيمن لإسناد.
أولوية المعاملات (Operator Precedence)
عند وجود عدة معاملات في تعبير واحد، يتّبع Java جدول الأولوية — مشابهًا لقاعدة الترتيب في الرياضيات (الضرب قبل الجمع). أهم القواعد التي يجب حفظها:
++/--(لاحقة)، ثم++/--(بادئة)،!*/%+-<><=>===!=&&||=+=-=وغيرها (الأدنى أولوية)
(a > b) && (c != 0) أوضح من a > b && c != 0 رغم أنهما ينتجان النتيجة ذاتها.
الجمع بين المفاهيم
هذا برنامج صغير يجمع عدة معاملات لتحديد ما إذا كان الطالب قد نجح في الامتحان:
الخلاصة
تنقسم معاملات Java إلى خمس مجموعات عملية: الحساب (+ - * / %)، المقارنة (== != < > <= >=)، المنطق (&& || !)، الإسناد (= += -= *= /= %=)، والزيادة والنقصان (++ --). تحدّد أولوية المعاملات ترتيب التقييم — استخدم الأقواس بسخاء لجعل التعبيرات واضحة. في الدرس القادم ستتعلم كيف يوسّع Java الأنواع أو يضيّقها تلقائيًا عند خلط الأنواع في تعبير واحد.