C語言中文網 目錄

Java switch case語句詳解

if…else 語句可以用來描述一個“二岔路口”,我們只能選擇其中一條路來繼續走,然而生活中經常會碰到“多岔路口”的情況。switch 語句提供了 if 語句的一個變通形式,可以從多個語句塊中選擇其中的一個執行。

switch 語句格式

switch 語句能解決 if 分支過多的情況,提供一種簡潔的方法來處理對應給定表達式的多種情況。

基本語法形式如下所示:
switch(表達式)
{
    case 值1:
        語句塊1;
        break;
    case 值2:
        語句塊2;
        break;
    …
    case 值n:
        語句塊n;
        break;
    default:
        語句塊n+1;
    break;
}

其中,switch、case、default、break 都是 Java 的關鍵字。
  • switch:表示“開關”,這個開關就是 switch 關鍵字后面小括號里的值,小括號里要放一個整型變量或字符型變量。
  • case:表示“情況,情形”,case 后必須是一個整型和字符型的常量表達式,通常是一個固定的字符、數字,例如 10、'a'。case 塊可以有多個,順序可以改變,但是每個 case 后的常量值必須各不相同。
  • default:表示“默認”,即其他情況都不滿足。default 后要緊跟冒號,default 塊和case 塊的先后順序可以變動,不會影響程序執行結果。通常,default 塊放在末尾,也可以省略不寫。
  • break:表示“停止”,即跳出當前結構。switch 語句在其開始處使用一個簡單的表達式。表達式的結果將與結構中每個 case 子句的值進行比較。如果匹配,則執行與該 case 關聯的語句塊。語句塊以 case 語句開頭,以 break 語句結尾,然后執行 switch 語句后面的語句。如果結果與所有 case 子句均不匹配,則執行 default 后的語句,其運行流程如圖 1 所示。


圖1  switch 語句執行流程圖

例 1

在節目的抽獎環節里,節目組會根據每位嘉賓的座位號來進行抽獎游戲,根據不同的號碼來決定獎項的大小。使用 switch 語句編寫 Java 程序來完成獎項分配,其實現代碼如下。
public static void main(String[] args)
{
     System.out.println("請輸入座位號碼:");
     Scanner sc=new Scanner(System.in);
     int num=sc.nextInt();
     switch(num)
     {
         case 8:
             System.out.println("恭喜你,獲得了三等獎!");
             break;
         case 88:
             System.out.println("恭喜你,獲得了二等獎!");
             break;
         case 888:
             System.out.println("恭喜你,獲得了一等獎!");
             break;
         default:
             System.out.println("謝謝參與!");
             break;
     }
}

當用戶輸入的號碼為 888 時,獲取的 num 值為 888,則與第三個 case 后的值匹配,執行它后面的語句,輸出“恭喜你,獲得了一等獎!”,然后執行 break 語句,跳出整個 switch 結構。如果輸入的號碼與 case 中的值都不匹配,則執行 default 后的語句。

程序執行結果如下所示:
請輸入座位號碼:
888
恭喜你,獲得了一等獎!
請輸入座位號碼:
88
恭喜你,獲得了二等獎!
請輸入座位號碼:
66
謝謝參與!

例 2

編寫一個 Java 程序,根據當前的星期數字輸出對應的漢字。在這里使用包含 break 的 switch 語句來判斷當前的星期,實現代碼如下:
public static void main(String[] args)
{
    String weekDate="";
    Calendar calendar = Calendar.getInstance();
    int week=calendar.get(Calendar.DAY_OF_WEEK)-1;
    switch(week)
    {
        case 0:
            weekDate="星期日";
            break;
        case 1:
            weekDate="星期一";
            break;
        case 2:
            weekDate="星期二";
            break;
        case 3:
            weekDate="星期三";
            break;
        case 4:
            weekDate="星期四";
            break;
        case 5:
            weekDate="星期五";
            break;
        case 6:
            weekDate="星期六";
            break;
    }
    System.out.println("今天是 "+weekDate);
}

本程序首先獲取當前的星期值,然后使用 switch 語句判斷 week 的值:0 表示星期日,1 表示星期一,2 表示星期二……以此類推,6 表示星期六。只要 week 值與 case 值相符合,則程序將執行該 case 中的語句,并跳出 switch 語句,輸出結果。

運行程序,輸出的結果如下:
今天是星期五

if 語句和 switch 語句的區別

if 和 switch 語句都表示條件語句,可以從使用效率和實用性兩方面加以區分。

1. 從使用效率上區分

從使用效率上區分,在對同一個變量的不同值作條件判斷時,既可以使用 switch 語句,也可以使用 if 語句。使用 switch 語句的效率更高一些,尤其是判斷的分支越多,越明顯。

2. 從實用性上區分

從語句的實用性角度區分,switch 語句不如 if 條件語句,if 語句是應用最廣泛和最實用的語句。

3. 何時使用 if 語句和 switch 語句

在程序開發的過程中,何時使用 if 語句和 switch 語句,需要根據實際情況而定,應盡量做到物盡其用。不能因為 switch 語句的效率高就一直使用,也不能因為 if 語句常用就不用 switch 語句。需要根據實際情況,具體問題具體分析,使用最適合的條件語句。

一般情況下,對于判斷條件較少的,可以使用 if 條件語句,但是在實現一些多條件的判斷中,最好使用 switch 語句。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo