switch(表达式) { case 常量表达式1:语句1; break; .... case 常量表达式n:语句n; break; default:语句;break; }
1.default就是如果没有符合的case就执行它,default并不是必须的.
2.case后的语句可以不用大括号.
3.switch语句的判断条件可以接受int,byte,char,short,枚举,不能接受其他类型.
4.在都没有break 语句的情况下:
首先会在所有的case 语句中,寻找满足条件的语句。如果找到,会从该语句顺序向下执行每个语句;若找不到,会从第一段开始,向下顺序执行每一段语句。
在有break 语句的情况下:
· 找到一个满足条件的case 语句执行,若找不到,会执行default 的语句。
原理归原理,下面是几个容易混淆的例子.
1.标准型(case后面都有break语句)
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("default"); break; } //输出结果: //3
2.特殊型1(不是完全有break语句,可以完成一些特殊应用)
int year=2005; int month=3; int day; 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; } //这里 day=31;
3.特殊型2(default的位置)
switch(i) { case 1: System.out.println(1); default: System.out.println("default"); case 2: System.out.println(2); break; case 3: System.out.println(3); break; } //输出结果: // 1 // default // 2