دوره‌ها / JAVA / سوئیچ/گزینش (Java Switch)

سوئیچ/گزینش (Java Switch)

15 دقیقه Article

سوئیچ/گزینش (Switch): مدیریت انتخاب‌های متعدد 🚦🔄

زمانی که می‌خواهیم یک متغیر را با مقادیر مختلف و ثابت مقایسه کنیم، به جای استفاده از چندین if...else if، از دستور switch استفاده می‌کنیم. این دستور کد را بسیار خواناتر و گاهی سریع‌تر می‌کند.

ساختار دستور Switch

عبارت داخل سوئیچ یکبار ارزیابی می‌شود و با مقادیر هر case مقایسه می‌گردد:

{code_block('int day = 4;\nswitch (day) {\n case 1:\n System.out.println("Monday");\n break;\n case 4:\n System.out.println("Thursday");\n break;\n default:\n System.out.println("Weekend");\n}')}

۱. کلمه کلیدی break 🛑

وقتی جاوا به کلمه break می‌رسد، از بلاکِ سوئیچ خارج می‌شود. اگر break را نگذارید، برنامه به اجرای دستوراتِ کیس‌های بعدی ادامه می‌دهد حتی اگر شرط آن‌ها درست نباشد! به این پدیده Fall-through می‌گویند.

۲. کلمه کلیدی default

این بخش زمانی اجرا می‌شود که هیچ‌کدام از caseها با مقدار متغیر مطابقت نداشته باشند. شبیه به else پایانی در جملات شرطی است.

انواع مجاز در Switch:

در جاوا، شما می‌توانید روی int, byte, short, char و حتی String (از نسخه 7 به بعد) سوئیچ بزنید.

Switch مدرن: در نسخه‌های جدید جاوا (14 به بعد)، ساختار جدیدی به نام Switch Expression معرفی شده که به شما اجازه می‌دهد از سوئیچ مثل یک تابع استفاده کنید و مقدار خروجی بگیرید.
چه زمانی از Switch استفاده کنیم؟ وقتی تعداد شرط‌های برابری (Equality) شما بیشتر از ۳ یا ۴ حالت است، سوئیچ انتخاب بهتری نسبت به If است.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: کنترل جریان در پروژه‌های صنعتی 🛠️💎

در این بخش، به نکاتی می‌پردازیم که تفاوت یک کدآموز و یک مهندس نرم‌افزار حرفه‌ای را مشخص می‌کنند.

۱. پیچیدگی زمانی (Time Complexity) در حلقه‌ها

هر بار که حلقه‌ای می‌نویسید، باید به تعداد تکرارهای آن فکر کنید. در جاوا، حلقه‌های تودرتو (Nested Loops) می‌توانند به سرعت باعث کُند شدن برنامه شوند (مرتبه O(n²)). همیشه سعی کنید با استفاده از الگوریتم‌های بهتر یا ساختارهایی مثل HashMap، نیاز به حلقه‌های تودرتو را به حداقل برسانید.

۲. بهینه‌سازی شرط‌ها (Early Return)

یکی از اصولی‌ترین روش‌ها برای نوشتن کدهای تمیز، استفاده از Early Return است. به جای نوشتن شرط‌های تو در تو (Nested Ifs)، ابتدا حالت‌های خطا را چک کرده و از متد خارج شوید. این کار باعث می‌شود کد شما "تخت" (Flat) و خواناتر شود.

۳. امنیت و اعتبار‌سنجی (Validation)

کنترل جریان فقط برای منطق برنامه نیست؛ بلکه برای امنیت هم حیاتی است. همیشه ورودی‌های کاربر را قبل از پردازش با استفاده از شرط‌ها اعتبار‌سنجی کنید تا از بروز مشکلاتی مثل NullPointerException یا حملات تزریق کد جلوگیری شود.

نکته پایانی: ساختارهای کنترلی قلب تپنده منطق برنامه شما هستند. تسلط بر نحوه صحیح استفاده از آن‌ها، باعث می‌شود برنامه‌هایی بنویسید که نه تنها کار می‌کنند، بلکه در برابر خطاها مقاوم و با راندمان بالا هستند.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

کد وضعیت Easy
سوال تمرین

یک متغیر status با مقدار 2 تعریف کنید. با استفاده از switch، اگر 1 بود چاپ کنید Active، اگر 2 بود Pending و در غیر این صورت Unknown.

پاسخ تمرین
JAVA
public class Main {
  public static void main(String[] args) {
    int status = 2;
    switch (status) {
      case 1:
        System.out.println("Active");
        break;
      case 2:
        System.out.println("Pending");
        break;
      default:
        System.out.println("Unknown");
    }
  }
}

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.