1. 程式人生 > 其它 >Java switch case語句

Java switch case語句

最近在專案中有根據傳入不同的type來進行處理不同業務的需求,所以用到了switch case,而自己又沒有深刻的總結過這方面的程式碼,導致程式碼穿透了,還好自測發現了,不然搞個烏龍。

那麼這個用法應該怎麼用呢? 我們先來了解這個關鍵字的用法是什麼:在菜鳥教程中定義時這樣的:switch case 語句判斷一個變數與一系列值中某個值是否相等,每個值稱為一個分支。

語法規則如下:

switch(expression){
    case value :
       //語句
       break; //可選
    case value :
       //語句
       break; //可選
    //你可以有任意數量的case語句
    default : //可選
       //語句
}

switch case 語句有如下規則:

  • switch 語句中的變數型別可以是: byte、short、int 或者 char。從 Java SE 7 開始,switch 支援字串 String 型別了,同時 case 標籤必須為字串常量或字面量。

  • switch 語句可以擁有多個 case 語句。每個 case 後面跟一個要比較的值和冒號。

  • case 語句中的值的資料型別必須與變數的資料型別相同,而且只能是常量或者字面常量。

  • 當變數的值與 case 語句的值相等時,那麼 case 語句之後的語句開始執行,直到 break 語句出現才會跳出 switch 語句。

  • 當遇到 break 語句時,switch 語句終止。程式跳轉到 switch 語句後面的語句執行。case 語句不必須要包含 break 語句。如果沒有 break 語句出現,程式會繼續執行下一條 case 語句,直到出現 break 語句。

  • switch 語句可以包含一個 default 分支,該分支一般是 switch 語句的最後一個分支(可以在任何位置,但建議在最後一個)。default 在沒有 case 語句的值和變數值相等的時候執行。default 分支不需要 break 語句。

switch case 執行時,一定會先進行匹配,匹配成功返回當前 case 的值,再根據是否有 break,判斷是否繼續輸出,或是跳出判斷。

如下例子:

public static void main(String args[]){
      int i = 5;
      switch(i){
         case 0:
            System.out.println("0");
         case 1:
            System.out.println("1");
         case 2:
            System.out.println("2");
         default:
            System.out.println("default");
      }
   }

該例子傳入一個表示式i,i定義為一個數字,那麼case的時候就只能是數字,這裡因為沒有break;關鍵字,所以會穿透,依次往下執行,又因為沒有匹配到5,最後的輸出結果就是default。

如下例子:

public static void main(String args[]){
      int i = 1;
      switch(i){
         case 0:
            System.out.println("0");
         case 1:
            System.out.println("1");
         case 2:
            System.out.println("2");
         default:
            System.out.println("default");
      }
   }

該例子傳入一個i,i=1,匹配到1了,從1開始執行業務程式碼,那麼又因為沒有break關鍵字,所以也會穿透,最後的輸出結果就是1,2,default。

在真實的專案中使用這種switch case特別需要注意加上break關鍵字,不加可能就會出大問題了。