Java switch 詳解

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語法格式

Java | 複製
1
2
3
4
5
6
7
8
9
10
11
switch (表達式) {
case 條件1:
    語句1;
    break;
case 條件2:
    語句2;
    break;
...
default:
    語句;
}

2使用示例

int類型switch示例

Java | 複製
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示例

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
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示例

Java | 複製
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的陷阱

示例:

Java | 複製
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);
}

輸出結果:

Java | 複製
1
2
3
2
3
0

巧用break

實例:輸出2015年指定月份的最大天數

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
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並不是必須的。

示例:

Java | 複製
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");
}

輸出結果:

Java | 複製
1
default
發佈了42 篇原創文章 · 獲贊 29 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章