خاصية 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 أداة قوية وفعالة لتنظيم كودك وجعله أكثر قابلية للقراءة عندما يكون لديك خيارات متعددة تعتمد على قيمة واحدة. استخدامها الصحيح يُحسن من أداء البرنامج ويجعله أكثر وضوحًا.
