Java:switch-case語句
時間:2019-02-18 來源:華清遠見
我(wo)(wo)們生活中(zhong)總會(hui)出現形形色(se)(se)色(se)(se)的(de)選擇,中(zhong)意(yi)選擇的(de)不同(tong),往后(hou)的(de)故事往往也(ye)不盡相同(tong)。計算機(ji)中(zhong)想要(yao)(yao)實現現實中(zhong)的(de)選擇交互,就需要(yao)(yao)用(yong)(yong)到“選擇語(yu)(yu)句”。當(dang)然簡單(dan)的(de)選擇可以用(yong)(yong)if...else...,但是在多個需要(yao)(yao)抉擇的(de)情況下,就需要(yao)(yao)用(yong)(yong)switch...case語(yu)(yu)句。下面我(wo)(wo)們來說(shuo)說(shuo)Java中(zhong)的(de)switch...case...語(yu)(yu)句的(de)用(yong)(yong)法,當(dang)然我(wo)(wo)們也(ye)可以適當(dang)的(de)同(tong)C語(yu)(yu)言(yan)中(zhong)的(de)switch...case...語(yu)(yu)句的(de)用(yong)(yong)法做(zuo)些比較,對(dui)比學習。
一個 switch 語(yu)句允許測試一個變(bian)量等于(yu)多個值(zhi)(zhi),每個值(zhi)(zhi)稱為一個case。switch 語(yu)句會(hui)根據測試的變(bian)量的值(zhi)(zhi)會(hui)對每個case 進行檢查,匹配對應的選項,執行不(bu)同(tong)的處理(li)語(yu)句。其處理(li)思路如(ru)下圖:

對(dui)應到計算(suan)機語(yu)(yu)言(yan)的語(yu)(yu)法:
switch( expression ){
case constant-expression:
語句塊;
break; /* 可選的 */
case constant-expression:
語句塊;
break; /* 可選的 */
...... /* 任(ren)意數量 */
default: /* 可選的 */
語句塊;
break; /* 可(ke)選的 */
}
switch:表示(shi)“開(kai)關(guan)”:
這個開關(guan)就是(shi) switch 關(guan)鍵字(zi)(zi)后面(mian)expression的(de)值(zhi)。expression是(shi)一個常(chang)量(liang)(liang)表達(da)式,整型變(bian)量(liang)(liang)或(huo)字(zi)(zi)符(fu)型變(bian)量(liang)(liang)(byte、short、int 或(huo)者 char)。從 Java SE 7 開始,switch 支持字(zi)(zi)符(fu)串(chuan) string類(lei)型。同時 case 標簽(qian)必(bi)須(xu)為(wei)字(zi)(zi)符(fu)串(chuan)常(chang)量(liang)(liang)或(huo)字(zi)(zi)面(mian)量(liang)(liang)。注意這里與C語(yu)言(yan)是(shi)有不同的(de),C語(yu)言(yan)中(zhong)只能針對(dui)基本(ben)數據類(lei)型中(zhong)的(de)整型類(lei)型或(huo)可(ke)以轉換(huan)為(wei)整型(int、char、byte、short)、枚舉類(lei)型使(shi)用(yong)switch,其(qi)他類(lei)型必(bi)須(xu)使(shi)用(yong)if。
case:表示“情(qing)況,情(qing)形”:
一(yi)個(ge)(ge)(ge) switch 中可以有任意數量的 case 語句(ju)。在每個(ge)(ge)(ge) case 后要跟一(yi)個(ge)(ge)(ge)整型(xing)和(he)字(zi)符型(xing)的常量表達式,和(he)一(yi)個(ge)(ge)(ge)冒號(hao)。case 的 constant-expression 必須(xu)與 switch 中的變量具(ju)有相同的數據類型(xing)。case 塊可以有多(duo)個(ge)(ge)(ge),順序可以改變,但是每個(ge)(ge)(ge) case 后的常量值必須(xu)各不相同。
break:表示“停止”:
當遇到 break 語(yu)句(ju)(ju)時,switch 語(yu)句(ju)(ju)終止。程序跳轉到 switch 語(yu)句(ju)(ju)后(hou)(hou)面的(de)語(yu)句(ju)(ju)執(zhi)行,即跳出當前結構(gou)。case 語(yu)句(ju)(ju)不必(bi)須要包(bao)含 break 語(yu)句(ju)(ju)。當變量的(de)值與 case 語(yu)句(ju)(ju)的(de)值相等(deng)時,那么 case 語(yu)句(ju)(ju)之后(hou)(hou)的(de)語(yu)句(ju)(ju)開始執(zhi)行,直到 break 語(yu)句(ju)(ju)出現才(cai)會(hui)跳出 switch 語(yu)句(ju)(ju)。
default:表示“默認”:
一(yi)(yi)(yi)個(ge) switch 語句(ju)(ju)(ju)可(ke)(ke)以(yi)有一(yi)(yi)(yi)個(ge)可(ke)(ke)選的(de)(de)(de) default,出現(xian)在 switch 的(de)(de)(de)結(jie)(jie)尾。switch 語句(ju)(ju)(ju)在其開(kai)始處使用一(yi)(yi)(yi)個(ge)簡單的(de)(de)(de)表達式(shi)。表達式(shi)的(de)(de)(de)結(jie)(jie)果將與結(jie)(jie)構中每個(ge) case 子(zi)句(ju)(ju)(ju)的(de)(de)(de)值進行(xing)比較。default 可(ke)(ke)用于在上面(mian)所(suo)有 case 都不為真(zhen)時執(zhi)行(xing)一(yi)(yi)(yi)個(ge)任務(wu)。通常,default可(ke)(ke)以(yi)省略不寫(xie),default 中的(de)(de)(de) break 語句(ju)(ju)(ju)也不是必需的(de)(de)(de)。default 塊和(he)case 塊的(de)(de)(de)先后順序可(ke)(ke)以(yi)變動,不會(hui)影響(xiang)程序執(zhi)行(xing)結(jie)(jie)果。
例程for JAVA:
public class Test {
public static void main(String[] args){
char a = ‘B’;
switch(a){
case ‘A’ :
System.out.println(" A ");
break;
case ‘B’ :
System.out.println(" B ");
case ‘C’ :
System.out.println(" C ");
case ‘D’ :
System.out.println(" D ");
break;
default :
System.out.println(" default ");
}
}
}
結果:
B
C
D
例(li)程 for C:
int main () {
char grade = 'B';
switch(grade) {
case 'A' :
printf("很棒!\n" );
break;
case 'B' :
printf("做得好\n" );
case 'C' :
printf("您通過了\n" );
case 'D' :
printf("最好再試一(yi)下\n" );
break;
default :
printf("無效的成績(ji)\n" );
}
return 0;
}
結果:
做得好
您通過了
最好再試一下

