Java switch-case 语句的优点和几点注意事项

时间:2022-09-26 08:04:03

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

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

 

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

使用if-else的效果:

[java] view plain copy print?
   
   
  1. if(day ==1){  
  2.     System.out.println("星期一");  
  3. }else if(day ==2){  
  4.     System.out.println("星期二");  
  5. }else if(day ==3){  
  6.     System.out.println("星期三");  
  7. }else if(day ==4){  
  8.     System.out.println("星期四");  
  9. }else if(day ==5){  
  10.     System.out.println("星期五");  
  11. }else if(day ==6){  
  12.     System.out.println("星期六");  
  13. }else if(day ==7){  
  14.     System.out.println("星期日");  
  15. }else{}   

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

[java] view plain copy print?
   
   
  1. switch(day){  
  2.     case 1:System.out.println("星期一");break;  
  3.     case 2:System.out.println("星期二");break;  
  4.     case 3:System.out.println("星期三");break;  
  5.     case 4:System.out.println("星期四");break;  
  6.     case 5:System.out.println("星期五");break;  
  7.     case 6:System.out.println("星期六");break;  
  8.     case 7:System.out.println("星期日");break;  
  9.     default:  
  10. }  
 

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

[java] view plain copy print?
   
   
  1. switch(day){  
  2.     case 1:  
  3.     case 2:  
  4.     case 3:  
  5.     case 4:  
  6.     case 5:System.out.println("工作日");break;  
  7.     case 6:  
  8.     case 7:System.out.println("双休日");break;  
  9.     default:  
  10. }  

要注意的一些情况:

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

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

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

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

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