使用switch语句完成的功能,使用if语句同样也能完成。但是使用if语句完成的功能,使用switch语句却不一定能完成。不过在某些特定的情况下,switch还是有着自己的独特之处。
1)语法
注意:break关键字表示直接退出整个switch代码块
switch(变量) {
case value1:
//执行代码1;
break;
...
case valueN
//执行代码n;
break;
default:
//执行代码;
break;
}
注:switch只能接收byte, short, char或者int类型的变量,如果是JDK1.7那么也可以接收String类型的变量
例如:
int day = 4;
String result;
switch(day) {
case 0:
result = "星期天";
break;
case 1:
result = "星期一";
break;
case 2:
result = "星期二";
break;
case 3:
result = "星期三";
break;
case 4:
result = "星期四";
break;
case 5:
result = "星期五";
break;
case 6:
result = "星期六";
break;
default:
result = "参数有误";
break;
}
System.out.println(day+" : "+result);
2)特殊情况
如果switch的变量与某个case的值匹配,那么就从这个case中的代码开始执行。假如遇到break,就退出整个switch语句,否则依次执行switch语句中后续的case子句,而且不再检查case的值。
例如:写一个方法,返回指定月份有多少天
public int getLastDay(int year, int month) {
int day = 30;
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 2:
day = getLeapYear(year)? 29:28;
}
return day;
}
注意:此处调用的getLeapYear方法就是上面if语句的例子所写的判断一个年份是否是闰年的方法.(在同一个类中,方法之间可以直接调用)