خاصية switch في جافا هي عبارة تحكم تسمح لك باختيار تنفيذ أحد الأوامر بناءً على قيمة متغير أو تعبير ما. تُستخدم كبديل لسلسلة متتالية من عبارات if-else if-else عندما يكون لديك خيارات متعددة تعتمد على قيمة واحدة.

كيف تعمل switch؟

تأخذ عبارة switch تعبيرًا (expression) يتم تقييمه، ثم تقارن قيمته مع مجموعة من الحالات (cases). إذا تطابقت قيمة التعبير مع إحدى الحالات، يتم تنفيذ الأوامر الموجودة داخل تلك الحالة.

بنية switch الأساسية:

Java
switch (expression) {
case value1:
// أوامر يتم تنفيذها إذا كان expression == value1
break;
case value2:
// أوامر يتم تنفيذها إذا كان expression == value2
break;
case value3:
// أوامر يتم تنفيذها إذا كان expression == value3
break;
default:
// أوامر يتم تنفيذها إذا لم تتطابق قيمة expression مع أي حالة أخرى
}
  • expression: هو التعبير الذي يتم تقييمه (يجب أن يكون من نوع byte, short, int, char, String (منذ Java 7)، أو enum).
  • case valueN: تحدد قيمة معينة يتم مقارنة expression بها.
  • break: تُستخدم للخروج من عبارة switch بعد تنفيذ الأوامر المطابقة. إذا لم تستخدم break، سيستمر التنفيذ إلى الحالة التالية (fall-through).
  • default: حالة اختيارية تُنفذ إذا لم تتطابق قيمة expression مع أي من الحالات الأخرى.

مثال:

Java
int day = 3;
String dayName;

switch (day) {
case 1:
dayName = "الاثنين";
break;
case 2:
dayName = "الثلاثاء";
break;
case 3:
dayName = "الأربعاء";
break;
case 4:
dayName = "الخميس";
break;
case 5:
dayName = "الجمعة";
break;
case 6:
dayName = "السبت";
break;
case 7:
dayName = "الأحد";
break;
default:
dayName = "يوم غير صالح";
}

System.out.println("اليوم هو: " + dayName); // سيطبع: اليوم هو: الأربعاء

ملاحظات مهمة:

  • أنواع البيانات: كما ذكرت سابقًا، يجب أن يكون نوع expression متوافقًا مع الأنواع المسموح بها في switch.
  • break ضرورية: غالبًا ما تكون عبارة break ضرورية لمنع "السقوط" إلى الحالات التالية. إذا لم تستخدم break، سيستمر التنفيذ إلى الحالة التالية حتى لو لم تكن مطابقة.
  • default اختيارية: حالة default اختيارية، ولكن يُنصح باستخدامها للتعامل مع الحالات غير المتوقعة.
  • switch المحسّنة (Java 14 والإصدارات الأحدث): قدمت Java 14 تحسينات على عبارة switch، مثل استخدام السهم -> بدلًا من النقطتين :، وإمكانية إرجاع قيمة من switch مباشرةً، وتبسيط التعامل مع الحالات المتعددة.

مثال على switch المحسّنة:

Java
int day = 3;
String dayName = switch (day) {
case 1 -> "الاثنين";
case 2 -> "الثلاثاء";
case 3 -> "الأربعاء";
case 4 -> "الخميس";
case 5 -> "الجمعة";
case 6 -> "السبت";
case 7 -> "الأحد";
default -> "يوم غير صالح";
};

System.out.println("اليوم هو: " + dayName); // سيطبع: اليوم هو: الأربعاء

تُعتبر switch أداة قوية وفعالة لتنظيم كودك وجعله أكثر قابلية للقراءة عندما يكون لديك خيارات متعددة تعتمد على قيمة واحدة. استخدامها الصحيح يُحسن من أداء البرنامج ويجعله أكثر وضوحًا.