java语言的三种基本结构——顺序、选择、循环。

switch-case是选择结构的重要实现方式。因为虽然实际上switch-case的功能完全可以用if-else代替,但有时用switch-case确实是一种更优雅的实现方式。

 

比如由一个变量判断星期几,考虑以下代码:

使用if-else的效果:



[java] view plaincopyprint?


1.

2. if(day ==1){
3. System.out.println("星期一");
4. }else if(day ==2){
5. System.out.println("星期二");
6. }else if(day ==3){
7. System.out.println("星期三");
8. }else if(day ==4){
9. System.out.println("星期四");
10. }else if(day ==5){
11. System.out.println("星期五");
12. }else if(day ==6){
13. System.out.println("星期六");
14. }else if(day ==7){
15. System.out.println("星期日");
16. }else{}
17.


使用switch-case会显得优雅的多:



[java] view plaincopyprint?


1.

2. switch(day){
3. case 1:System.out.println("星期一");break;
4. case 2:System.out.println("星期二");break;
5. case 3:System.out.println("星期三");break;
6. case 4:System.out.println("星期四");break;
7. case 5:System.out.println("星期五");break;
8. case 6:System.out.println("星期六");break;
9. case 7:System.out.println("星期日");break;
10. default:
11. }
12.


尤其是遇到类似这样的情况,更显其优雅——可读性强、易于维护:



[java] view plaincopyprint?


1.

2. switch(day){
3. case 1:
4. case 2:
5. case 3:
6. case 4:
7. case 5:System.out.println("工作日");break;
8. case 6:
9. case 7:System.out.println("双休日");break;
10. default:
11. }
12.


要注意的一些情况:

1.  switch的break语句是可选的,有时我们会利用这种特性(如上面的代码),但是一般情况下break是不能少的。否则可能会出现意料之外的错误。——没有break,程序会继续执行后面的代码。

2.  default语句也是可选的。相当于对应if-else语句最后的else。

3.  java语言用于匹配的选择因子必须是整形或字符型常量。这很重要。

4.  switch语句的比较是从上往下,所以把匹配概率大的选择因子放在前面可以提高效率。

5.  选择因子具有唯一性,即不能有2个相同的因子存在。

 

暂时想到这么多,以后想到了再添加吧!