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