天天看點

Java基礎文法-條件結構-switch條件結構1.什麼是switch條件結構2.switch的文法結構3.正常使用的例子4.缺失break後的 case穿透現象5.default放在中間6.完成

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!