首先讓我們先來了解下switch語句的執(zhí)行邏輯吧!
1.執(zhí)行邏輯
我們可以結(jié)合下圖來理解switch語句的執(zhí)行邏輯。switch的執(zhí)行邏輯,其實就相當(dāng)于是把多種情況分別列出,根據(jù)我們輸入的值來判斷符合哪種情況。符合哪個情況,就進(jìn)入到對應(yīng)的分支里面去執(zhí)行,整體的執(zhí)行邏輯就是這樣的,如下圖所示:
2.基本語法
在使用switch之前,首先我們得記住它的基本語法結(jié)構(gòu),其基本語法格式如下:
switch(值){
case 值1:
//switch中的值與值1相等時執(zhí)行的代碼
break; //可選
case 值2:
//switch中的值與值2相等時執(zhí)行的代碼
break; //可選
case 值3:
//switch中的值與值3相等時執(zhí)行的代碼
break; //可選
case 值4:
//switch中的值與值4相等時執(zhí)行的代碼
break; //可選
default:
//switch中的值與以上所有值都不相等時執(zhí)行的代碼
break; //可選
}
3.switch語句中的case和default
經(jīng)常碰到有朋友問這樣的問題:switch語句的case和default有順序嗎?接下來就帶大家解決下這個問題:
在java中,switch語句中的case和default是由順序的,但是這個順序并不會影響程序執(zhí)行。
在switch語句中,當(dāng)表達(dá)式的值和某個case的值相等的時候,該case語句及其后面的語句都會被執(zhí)行,只到遇到break語句或者switch語句的末尾為止,如果所有的case語句都不匹配,那么就會執(zhí)行default語句了。
案例分析:
int day = 4;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
default:
System.out.println("Weekend");
break;
}
在這個例子中,當(dāng)變量 day 的值為 4 時,程序會輸出 "Thursday",因為它匹配了第四個 case 語句。
注意,如果沒有 break 語句,程序會繼續(xù)執(zhí)行下一個 case 語句或者 default 語句,直到遇到 break 為止。這種情況下,多個 case 語句可以共享同一個代碼塊,如下面的例子所示:
int day = 4;
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("Weekday");
break;
default:
System.out.println("Weekend");
break;
}
在這個例子中,如果變量 day 的值為 1、2、3、4 或 5,程序都會輸出 "Weekday"。
4.switch分支語句的使用
Switch分支語句是一種常見的控制語句,用于根據(jù)變量的值選擇執(zhí)行不同的代碼塊。下面是一個案例,我們來演示下如何使用Switch分支語句:
public class SwitchExample {
public static void main(String[] args) {
int day = 4;
String dayString;
// 使用Switch語句判斷星期幾
switch (day) {
case 1:
dayString = "星期一";
break;
case 2:
dayString = "星期二";
break;
case 3:
dayString = "星期三";
break;
case 4:
dayString = "星期四";
break;
case 5:
dayString = "星期五";
break;
case 6:
dayString = "星期六";
break;
case 7:
dayString = "星期日";
break;
default:
dayString = "無效的天數(shù)";
break;
}
System.out.println(dayString);
}
}
●在這個例子中,我們定義了一個整數(shù)變量 day,然后使用Switch語句根據(jù)該變量的值來選擇執(zhí)行不同的代碼塊。當(dāng)day的值為1時,Switch語句執(zhí)行第一個case分支;當(dāng)day的值為2時,Switch語句執(zhí)行第二個case分支,以此類推。如果day的值與任何一個case分支都不匹配,Switch語句將執(zhí)行default分支。在這個例子中,如果day的值不是1-7之間的整數(shù),Switch語句將執(zhí)行default分支,并將 dayString 設(shè)置為 "無效的天數(shù)"。
●最后,我們通過 System.out.println() 方法打印出 dayString 的值,以便在控制臺上顯示星期幾。
5.Java中switch條件語句的用法
在 switch 語句中,如果在一個 case 中缺少 break,則代碼將會繼續(xù)執(zhí)行下一個 case 中的語句,直到遇到 break 語句或者 switch 語句結(jié)束為止。
例如下面這種情況
int day = 3;
switch (day) {
case 1:
System.out.println("Monday");
case 2:
System.out.println("Tuesday");
case 3:
System.out.println("Wednesday");
case 4:
System.out.println("Thursday");
case 5:
System.out.println("Friday");
case 6:
System.out.println("Saturday");
case 7:
System.out.println("Sunday");
}
在這個例子中,day的值為3,因此switch語句會執(zhí)行case 3語句塊中的代碼,即打印出"Wednesday"。然而,由于case 3語句塊沒有包含break語句,控制流程將繼續(xù)執(zhí)行下一個case語句塊,即case 4語句塊,打印出"Thursday"。隨后,控制流程將繼續(xù)執(zhí)行下一個case語句塊,直到遇到break語句或者switch語句結(jié)束。
因此,如果在switch語句中的case語句塊中忘記添加break語句,會導(dǎo)致意想不到的結(jié)果。這種錯誤稱為“落入”錯誤(fall-through error)。為了避免這種錯誤,建議在每個case語句塊的末尾添加break語句。
以上幾點(diǎn)都是switch語句中的重點(diǎn)哦,大家一定要多多練習(xí),多多總結(jié)!