1.什麼是switch條件結構
switch 條件結構的使用是搭配 case 關鍵字來使用的。
表示 判斷一個變量與一系列值中的某個值是否相等,其中每個值稱為一個分支。
2.switch的文法結構
switch(expression){
case value1:
// 要執行的邏輯處理
break; // break 是可選的關鍵字
case value2:
// 要執行的邏輯處理
break; // break 是可選的關鍵字
case value3:
// 要執行的邏輯處理
break; // break 是可選的關鍵字
......
default: // 可選的分支 : 不一定是放在最後的,放在中間也可以正常執行
// 要執行的邏輯處理
break; // break 是可選的關鍵字
}
switch中的expression的合法值 :
byte 、short、 int、 char
jdk1.7 之後,支援了 String 類型,且case的值必須是字元串常量。
3.正常使用的例子
String word = "Hello";
switch (word){
case "hei":
int i = 10/5;
System.out.println("計算得到的i = "+i);
System.out.println("you say hei");
break;
case "Hello":
int j = 20/5;
System.out.println("計算得到的 j = "+j);
System.out.println("you say Hello");
break;
case "what":
int k = 30/5;
System.out.println("計算得到的 k = "+k);
System.out.println("you say what");
break;
default:
System.out.println("這是預設輸出的值!");
break;
}
// 執行結果是:
計算得到的 j = 4
you say Hello
4.缺失break後的 case穿透現象
當某個case分支中沒有寫 break時,在執行了該case分支後,會繼續執行下一個case分支中的語句,直到遇到break 或 所有分支都執行完成才會結束。這個現象就叫做 case穿透
。是以,在使用switch分支語句時,除非特殊設計,在case分支中一定要寫上 break。
String word = "Hello";
switch (word){
case "hei":
int i = 10/5;
System.out.println("計算得到的i = "+i);
System.out.println("you say hei");
break;
case "Hello":
int j = 20/5;
System.out.println("計算得到的 j = "+j);
System.out.println("you say Hello");
//break;
case "what":
int k = 30/5;
System.out.println("計算得到的 k = "+k);
System.out.println("you say what");
//break;
default:
System.out.println("這是預設輸出的值!");
//break;
}
// 執行結果
計算得到的 j = 4
you say Hello
計算得到的 k = 6
you say what
這是預設輸出的值!
// 結果分析 : 由于 Hello 比對成功功了 第二個case分支,是以執行了第二個case分支中的邏輯,
而由于沒有break語句,導緻了case穿透現象,
到了第三個case分支,執行了第三個case分支中的邏輯,也沒有break,
是以到了 default中,程式一直執行完畢了。
5.default放在中間
default 關鍵字也是可以放在中間的
String word = "Hello";
switch (word){
case "hei":
int i = 10/5;
System.out.println("計算得到的i = "+i);
System.out.println("you say hei");
break;
case "Hello":
int j = 20/5;
System.out.println("計算得到的 j = "+j);
System.out.println("you say Hello");
//break;
default:
System.out.println("這是預設輸出的值!");
//break;
case "what":
int k = 30/5;
System.out.println("計算得到的 k = "+k);
System.out.println("you say what");
//break;
}
// 執行結果
計算得到的 j = 4
you say Hello
這是預設輸出的值! 【這一句就是default中輸出的内容,且default中沒有break,是以同樣出現了穿透現象】
計算得到的 k = 6
you say what
6.完成
Congratulations!
You are one step closer to success!