语句形式如下:
switch(expression){
case value1:
//语句1
break;
case value2:
//语句2
break;
case value3:
//语句3
break;
default:
//默认语句
break;
}
表达式expression必须为byte、short、int、char或者enum类型,每个case语句后的值value必须是与表达式类型兼容的一个常量。case的值是不允许重复的。
switch语句的执行过程如下:表达式的值首先与每个case语句中的常量进行比较。如果发现了一个与之相匹配的,则执行该case语句后的代码。如果没有一个case常量与表达式的值相匹配,则执行default语句。default语句是可选的。如果没有相匹配的case语句,也没有default语句,则什么也不执行。
switch语句的执行过程和default语句的位置没有关系,不会因为把default语句放在switch的开始处而执行default语句。
int x = 8;
int y = 8;
char operator = '*';
switch (operator){
case '+':
System.out.println("x+y=" + (x + y));
break;
case '-':
System.out.println("x-y=" + (x - y));
break;
case '*':
System.out.println("x*y=" + (x * y));
break;
case '/':
System.out.println("x/y=" + (x / y));
break;
default:
System.out.println("未知的运算符!");
break;
}
运行结果:
x*y=64 若去掉case '*'后面的break,则输出 x*y=64 x/y=1
int x = 8;
int y = 8;
char operator = '*';
switch (operator){
default:
System.out.println("未知的运算符!");
break;
case '+':
System.out.println("x+y=" + (x + y));
break;
case '-':
System.out.println("x-y=" + (x - y));
break;
case '*':
System.out.println("x*y=" + (x * y));
break;
case '/':
System.out.println("x/y=" + (x / y));
break;
}
运行结果:
x*y=64
defalut可以放在switch中任何位置。按顺序先执行case后执行default