我们生活中总会出现形形色色的选择,中意选择的不同,往后的故事往往也不尽相同。计算机中想要实现现实中的选择交互,就需要用到“选择语句”。当然简单的选择可以用if...else...,但是在多个需要抉择的情况下,就需要用switch...case语句。下面我们来说说Java中的switch...case...语句的用法,当然我们也可以适当的同C语言中的switch...case...语句的用法做些比较,对比学习。
一个 switch 语句允许测试一个变量等于多个值,每个值称为一个case。switch 语句会根据测试的变量的值会对每个case 进行检查,匹配对应的选项,执行不同的处理语句。其处理思路如下图:
对应到计算机语言的语法:
switch( expression ){
case constant-expression:
语句块;
break; /* 可选的 */
case constant-expression:
语句块;
break; /* 可选的 */
...... /* 任意数量 */
default: /* 可选的 */
语句块;
break; /* 可选的 */
}
switch:表示“开关”:
这个开关就是 switch 关键字后面expression的值。expression是一个常量表达式,整型变量或字符型变量(byte、short、int 或者 char)。从 Java SE 7 开始,switch 支持字符串 string类型。同时 case 标签必须为字符串常量或字面量。注意这里与C语言是有不同的,C语言中只能针对基本数据类型中的整型类型或可以转换为整型(int、char、byte、short)、枚举类型使用switch,其他类型必须使用if。
case:表示“情况,情形”:
一个 switch 中可以有任意数量的 case 语句。在每个 case 后要跟一个整型和字符型的常量表达式,和一个冒号。case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型。case 块可以有多个,顺序可以改变,但是每个 case 后的常量值必须各不相同。
break:表示“停止”:
当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行,即跳出当前结构。case 语句不必须要包含 break 语句。当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
default:表示“默认”:
一个 switch 语句可以有一个可选的 default,出现在 switch 的结尾。switch 语句在其开始处使用一个简单的表达式。表达式的结果将与结构中每个 case 子句的值进行比较。default 可用于在上面所有 case 都不为真时执行一个任务。通常,default可以省略不写,default 中的 break 语句也不是必需的。default 块和case 块的先后顺序可以变动,不会影响程序执行结果。
例程for JAVA:
public class Test {
public static void main(String[] args){
char a = ‘B’;
switch(a){
case ‘A’ :
System.out.println(" A ");
break;
case ‘B’ :
System.out.println(" B ");
case ‘C’ :
System.out.println(" C ");
case ‘D’ :
System.out.println(" D ");
break;
default :
System.out.println(" default ");
}
}
}
结果:
B
C
D
例程 for C:
int main () {
char grade = 'B';
switch(grade) {
case 'A' :
printf("很棒!\n" );
break;
case 'B' :
printf("做得好\n" );
case 'C' :
printf("您通过了\n" );
case 'D' :
printf("最好再试一下\n" );
break;
default :
printf("无效的成绩\n" );
}
return 0;
}
结果:
做得好
您通过了
最好再试一下