java语言的三种基本结构——顺序、选择、循环。
switch-case是选择结构的重要实现方式。因为虽然实际上switch-case的功能完全可以用if-else代替,但有时用switch-case确实是一种更优雅的实现方式。
比如由一个变量判断星期几,考虑以下代码:
使用if-else的效果:
[java] view plain copy print?
- if(day ==1){
- System.out.println("星期一");
- }else if(day ==2){
- System.out.println("星期二");
- }else if(day ==3){
- System.out.println("星期三");
- }else if(day ==4){
- System.out.println("星期四");
- }else if(day ==5){
- System.out.println("星期五");
- }else if(day ==6){
- System.out.println("星期六");
- }else if(day ==7){
- System.out.println("星期日");
- }else{}
使用switch-case会显得优雅的多:
[java] view plain copy print?
- switch(day){
- case 1:System.out.println("星期一");break;
- case 2:System.out.println("星期二");break;
- case 3:System.out.println("星期三");break;
- case 4:System.out.println("星期四");break;
- case 5:System.out.println("星期五");break;
- case 6:System.out.println("星期六");break;
- case 7:System.out.println("星期日");break;
- default:
- }
尤其是遇到类似这样的情况,更显其优雅——可读性强、易于维护:
[java] view plain copy print?
- switch(day){
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:System.out.println("工作日");break;
- case 6:
- case 7:System.out.println("双休日");break;
- default:
- }
要注意的一些情况:
1. switch的break语句是可选的,有时我们会利用这种特性(如上面的代码),但是一般情况下break是不能少的。否则可能会出现意料之外的错误。——没有break,程序会继续执行后面的代码。
2. default语句也是可选的。相当于对应if-else语句最后的else。
3. java语言用于匹配的选择因子必须是整形或字符型常量。这很重要。
4. switch语句的比较是从上往下,所以把匹配概率大的选择因子放在前面可以提高效率。
5. 选择因子具有唯一性,即不能有2个相同的因子存在。