十一、java版 SpringCloud分散式微服務雲架構之Java switch case 語句
Java switch case 語句
switch case 語句判斷一個變數與一系列值中某個值是否相等,每個值稱為一個分支。
推薦分散式架構
語法
switch case 語句語法格式如下:
1 2 3 4 5 6 7 |
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,判斷是否繼續輸出,或是跳出判斷。
例項
Test.java 檔案程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public class Test{
public static void main(Stringargs[]){
//chargrade=args[0].charAt(0);
char grade= 'C' ;
switch (grade)
{
case 'A' :
System.out.println( "優秀" );
break ;
case 'B' :
case 'C' :
System.out.println( "良好" );
break ;
case 'D' :
System.out.println( "及格" );
break ;
case 'F' :
System.out.println( "你需要再努力努力" );
break ;
default :
System.out.println( "未知等級" );
}
System.out.println( "你的等級是" +grade);
}
}
|
以上程式碼編譯執行結果如下:
1 2 |
良好
你的等級是C
|
如果 case 語句塊中沒有 break 語句時,JVM 並不會順序輸出每一個 case 對應的返回值,而是繼續匹配,匹配不成功則返回預設 case。
Test.java 檔案程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class Test{
public static void main(Stringargs[]){
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" );
}
}
}
|
以上程式碼編譯執行結果如下:
1 |
default
|
如果 case 語句塊中沒有 break 語句時,匹配成功後,從當前 case 開始,後續所有 case 的值都會輸出。
Test.java 檔案程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class Test{
public static void main(Stringargs[]){
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" );
}
}
}
|
以上程式碼編譯執行結果如下:
1 2 3 |
1
2
default
|
如果當前匹配成功的 case 語句塊沒有 break 語句,則從當前 case 開始,後續所有 case 的值都會輸出,如果後續的 case 語句塊有 break 語句則會跳出判斷。
Test.java 檔案程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class Test{
public static void main(Stringargs[]){
int i= 1 ;
switch (i){
case 0 :
System.out.println( "0" );
case 1 :
System.out.println( "1" );
case 2 :
System.out.println( "2" );
case 3 :
System.out.println( "3" ); break ;
default :
System.out.println( "default" );
}
}
}
|
以上程式碼編譯執行結果如下:
1 2 3 |
1
2
3
|