switch 語句由一個控制表達式和多個case標籤組成。
switch 控制表達式支持的類型有byte、short、char、int、enum(Java 5)、String(Java 7)。
switch-case語句完全可以與if-else語句互轉,但通常來說,switch-case語句執行效率要高。
default在當前switch找不到匹配的case時執行。default並不是必須的。
一旦case匹配,就會順序執行後面的程序代碼,而不管後面的case是否匹配,直到遇見break。
1語法格式
1 2 3 4 5 6 7 8 9 10 11 | switch (表達式) { case 條件 1 : 語句 1 ; break ; case 條件 2 : 語句 2 ; break ; ... default : 語句; } |
2使用示例
int類型switch示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | int i = 3 ; switch (i) { case 1 : System.out.println( 1 ); break ; case 2 : System.out.println( 2 ); break ; case 3 : System.out.println( 3 ); break ; default : System.out.println( 0 ); } |
枚舉(Enum)類型switch示例
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 27 28 | package net.xsoftlab.baike; public class TestSwitch { static enum E { A, B, C, D } public static void main(String args[]) { E e = E.B; switch (e) { case A: System.out.println( "A" ); break ; case B: System.out.println( "B" ); break ; case C: System.out.println( "C" ); break ; case D: System.out.println( "D" ); break ; default : System.out.println( 0 ); } } } |
String類型switch示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | String str = "C" ; switch (str) { case "A" : System.out.println( "A" ); break ; case "B" : System.out.println( "B" ); break ; case "C" : System.out.println( "C" ); break ; default : System.out.println( 0 ); } |
3break
break在switch中用於結束當前流程。
一旦case匹配,就會順序執行後面的程序代碼,而不管後面的case是否匹配,直到遇見break。
忘記寫break的陷阱
示例:
1 2 3 4 5 6 7 8 9 10 11 | int i = 2 ; switch (i) { case 1 : System.out.println( 1 ); case 2 : System.out.println( 2 ); case 3 : System.out.println( 3 ); default : System.out.println( 0 ); } |
輸出結果:
1 2 3 | 2 3 0 |
巧用break
實例:輸出2015年指定月份的最大天數
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 | int year = 2015 ; int month = 8 ; int day = 0 ; switch (month) { case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : day = 31 ; break ; case 2 : day = 28 ; break ; case 4 : case 6 : case 9 : case 11 : day = 30 ; break ; } System.out.println(day); |
4default
default在當前switch找不到匹配的case時執行。default並不是必須的。
示例:
1 2 3 4 5 6 7 8 9 | int x = 0 ; switch (x) { case 1 : System.out.println( 1 ); case 2 : System.out.println( 2 ); default : System.out.println( "default" ); } |
輸出結果:
1 | default |