switch语句根据表达式的值来执行多个操作中的一个,它的 般格式如下:
switch (expression){
case value1:statement1;
break;
case value2:statement2;
break;
…………
case valueN:statemendN;
break;
[default:defaultStatement;]
}
1.表达式expression可以返回任一简单类型的值(如整型、实? 、字符型),多分支语句把 表达式返回的值与每个case子句中的值相比。如果匹配成功,则 ?行该case子句后的语句序 列。
2.case子句中的值valueI必须是常量,而且所有case子句中的值 是不同的。
3.default子句是任选的。当表达式的值与任一case子句中的? 都不匹配时,程序执行 default后面的语句。如果表达式的值与任一case子句中的值都不 ?配且没有default子句,则程 序不作任何操作,而是直接跳出switch语句。
4.break语句用来在执行完一个case分支后,使程序跳出switch语 ?,即终止switch语句的执行 。因为case子句只是起到一个标号的作用,用来查找匹配的入口 ?从此处开始执行,对后面 的case子句不再进行匹配,而是直接执行其后的语句序列,因此 该在每个case分支后,要用 break来终止后面的case分支语句的执行。 在一些特殊情况下,多个不同的case值要执行一组相同的操 ,这时可以不用break。
5.case分支中包括多个执行语句时,可以不用大括号{}括起。
6.switch语句的功能可以用if-else来实现,但在某些情况下,使 switch语句更简炼,可读性强 ,而且程序的执行效率提高。
7.举例:
例4.3.根据考试成绩的等级打印出百分制分数段。
public class GradeLevel{
public static void main(String args[]){
System.out.println("\\n**firstsituation**");
char grade='C';//normaluse
switch(grade){
case 'A':System.out.println(grade+" is 85~100");
break; case 'B':System.out.println(grade+" is 70~84");
break; case 'C':System.out.println(grade+" is 60~69");
break; case 'D':System.out.println(grade+" is <60");
break; default:System.out.println("input error");
} System.out.println("\\n**secondsituation**");
grade='A';∥creat error without break statement
switch(grade){
case 'A':System.out.println(grade+"is85~100");
case 'B':System.out.println(grade+"is70~84");
case 'C':System.out.println(grade+"is60~69");
case 'D':System.out.println(grade+"is<60");
default:System.out.println("inputerror");
} System.out.println("\\n**thirdsituation**");
grade='B';∥severalcasewithsameoperation
switch(grade){
case 'A':
case 'B':
case 'C':System.out.println(grade+"is>=60");
break; case 'D':System.out.println(grade+"is<60");
break; default:System.out.println("inputerror");
}
}
}
运行结果为
C:\\>java GradeLevel
****first situation****
C is 60~69
****second situation****
A is 85~100
A is 70~84
A is 60~69
A is <60
input error
****third situation****
B is >=60
从该例中我们可以看到break语句的作用。