سوئیچ/گزینش (Java Switch)
سوئیچ/گزینش (Switch): مدیریت انتخابهای متعدد 🚦🔄
زمانی که میخواهیم یک متغیر را با مقادیر مختلف و ثابت مقایسه کنیم، به جای استفاده از چندین if...else if، از دستور switch استفاده میکنیم. این دستور کد را بسیار خواناتر و گاهی سریعتر میکند.
ساختار دستور Switch
عبارت داخل سوئیچ یکبار ارزیابی میشود و با مقادیر هر case مقایسه میگردد:
۱. کلمه کلیدی break 🛑
وقتی جاوا به کلمه break میرسد، از بلاکِ سوئیچ خارج میشود. اگر break را نگذارید، برنامه به اجرای دستوراتِ کیسهای بعدی ادامه میدهد حتی اگر شرط آنها درست نباشد! به این پدیده Fall-through میگویند.
۲. کلمه کلیدی default
این بخش زمانی اجرا میشود که هیچکدام از caseها با مقدار متغیر مطابقت نداشته باشند. شبیه به else پایانی در جملات شرطی است.
انواع مجاز در Switch:
در جاوا، شما میتوانید روی int, byte, short, char و حتی String (از نسخه 7 به بعد) سوئیچ بزنید.
Switch Expression معرفی شده که به شما اجازه میدهد از سوئیچ مثل یک تابع استفاده کنید و مقدار خروجی بگیرید.
بخش تخصصی: کنترل جریان در پروژههای صنعتی 🛠️💎
در این بخش، به نکاتی میپردازیم که تفاوت یک کدآموز و یک مهندس نرمافزار حرفهای را مشخص میکنند.
۱. پیچیدگی زمانی (Time Complexity) در حلقهها
هر بار که حلقهای مینویسید، باید به تعداد تکرارهای آن فکر کنید. در جاوا، حلقههای تودرتو (Nested Loops) میتوانند به سرعت باعث کُند شدن برنامه شوند (مرتبه O(n²)). همیشه سعی کنید با استفاده از الگوریتمهای بهتر یا ساختارهایی مثل HashMap، نیاز به حلقههای تودرتو را به حداقل برسانید.
۲. بهینهسازی شرطها (Early Return)
یکی از اصولیترین روشها برای نوشتن کدهای تمیز، استفاده از Early Return است. به جای نوشتن شرطهای تو در تو (Nested Ifs)، ابتدا حالتهای خطا را چک کرده و از متد خارج شوید. این کار باعث میشود کد شما "تخت" (Flat) و خواناتر شود.
۳. امنیت و اعتبارسنجی (Validation)
کنترل جریان فقط برای منطق برنامه نیست؛ بلکه برای امنیت هم حیاتی است. همیشه ورودیهای کاربر را قبل از پردازش با استفاده از شرطها اعتبارسنجی کنید تا از بروز مشکلاتی مثل NullPointerException یا حملات تزریق کد جلوگیری شود.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
یک متغیر status با مقدار 2 تعریف کنید. با استفاده از switch، اگر 1 بود چاپ کنید Active، اگر 2 بود Pending و در غیر این صورت Unknown.
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");
}
}
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.