举例:比如计算机大赛:
如果获得第一名,奖励一个mac电脑;
如果获得第二名,奖励一个键鼠套装;
如果获得第三名,奖励一个1T移动硬盘;
其他名次,则没有奖励;
分析:这个问题可以用多重if选择结构来解决;
public static void main(String[] args){
int rankings = 3;
if(rankings=1){
System.out.println("奖励一个mac电脑");
}else if(rankings=2){
System.out.println("奖励一个键鼠套装");
}else if(rankings=3){
System.out.println("奖励一个1T移动硬盘");
}else{
System.out.println("没有奖励");
}
}
这个问题得到了解决,可是看上去很繁琐,这个问题显然是等值的判断,之前的都是区间判断,对此Java提供了一种结构,可以方便解决等值判断问题,这就是switch选择结构;
什么是switch选择结构switch选择结构可以更好地解决等值判断问题;
语法:
switch(表达式){
case 常量1:
代码块1;
break;
case 常量2:
代码块2;
break;
. . . . . .
default:
代码块n;
break;
}
switch,case,default,break都是Java的关键字
switch:表示"开关",这个开关就是switch关键字后面小括号里表达式的值,JDK1.7后,switch语句小括号里可以是int,short,byte,char,枚举类型,String类型表达式;
case:表示:“情况,情形”,case后可以是int,short,byte,char,枚举,String类型,通常是一个固定的值.case块可以有多个,顺序可以改变,但是每个case后常量的值必须各不相同;
default:表示"默认",即其他情况都不满足.default后要紧跟冒号.default块和case块的先后顺序可以变动,不会影响程序执行的结果,通常,default块放在末尾,也可以省略;
break:表示"中断,停止",即跳出当前循环;
先计算获得switch后面小括号里的表达式或变量的值,然后计算结果顺序与每个case后的常量比较,当二者相等时,执行这个case块中的代码;当遇到break时,就跳出switch选择结构,执行switch选择结构之后的代码.如果没有任何一个case后的常量与switch后的小括号中的值相等则执行switch末尾部分的default块中的代码;
如何使用switch选择结构public static void main(String[] args){
int rankings = 3;
switch(rankings){
case 1:
System.out.println("奖励一个mac电脑");
break;
case 2:
System.out.println("奖励一个键鼠套装");
break;
case 3:
System.out.println("奖励一个1T移动硬盘");
break;
default:
System.out.println("没有奖励");
break;
}
}
switch选择结构的条件只能是等值的判断,而且只能是整型或字符型的等值判断.也就是说,switch选择结构只能用于判断一个整型变量或表达式是否等于某个 整数值的情况,或者一个字符型变量或表达式是否等于某个字符的情况,并且每一个case后面的常量值都不同.而多重if选择结构既可以用于判断条件是等值的情况,也可以用于判断条件是区间的情况
break能否省略不写break语句是可以省略的,但是省略后会带来一些问题,省略的break之后:当每个case后的常量值与switch后小括号中的值相匹配时,执行该case块的代码,后面的case就不再进行条件判断,而直接执行后面所有case块中的代码,直到遇到break结束.
注意事项每个case后的代码块可以有多个语句,既可以有一组语句,而且不需要用"{}“括起来.case的default后都有一个冒号,不能漏写,否则编译不通过,对于每个case的结尾,都要想一想是否需要从这里跳出整个switch选择结构,如果需要,一定不要忘记写"break”;
在case后面的代码块中,break语句是可以省略的,还可以让多个case执行同一语句;



