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
|