3.5 switch语句
如果要根据一个值(数字或者字符)来判定应该执行哪条分支,不需要判断什么条件,这个时候,用switch语句更合适。switch语法如下:
switch(表达式){
case a:…;
break;
case b:…;
break;
/*
其他代码
*/
default:…;
}
(1)switch需要大括号,不能省略;
(2)switch里面不是条件,是表达式,可以计算出值,这里只接受算术表达式、字符表达式或字符串;
(3)case后的常量(a、b)的类型和表达式的类型一致,这里执行多条语句不需要大括号;
(4)不允许两个case有相同的值;
(5)在case后面紧接着的是冒号,如果冒号后面没有任何语句,那么就执行紧接着的下一个case语句,直到遇到break;如果要形成多路逻辑,那么每个case语句最后都要写上break。
如果不写会怎样呢?我们用代码来说明,下面代码中,如果a是4,那么执行完case 4的语句后,就执行case 5;执行完case 5的语句后,就执行case 6,到这里打印出a,遇到了break,整个switch结束。没有break的case语句执行完,会继续执行下一条case,直到遇到break或者结束,不管后面的case有没有命中!
switch(a){
case 4:语句;
case 5:语句;
case 6:System.out.println(a);
break;
}
(6)default是缺省,如果没有任何一个case命中,那么就直接执行default里面的代码。default不是必须的,可以没有。
下面来看一个具体的例子,运行一下看看什么效果:
public static void main(String[]args){ System.out.println("请输入一个0到6的整数。"); int a=new java.util.Scanner(System.in).nextInt(); switch(a){ case 0:System.out.println("Sunday"); break; case 1:System.out.println("Monday"); break; case 2:System.out.println("Tuesday"); break; case 3:System.out.println("Wednesday"); break; case 4:System.out.println("Thursday"); break; case 5:System.out.println("Friday"); break; case 6:System.out.println("Saturday"); break; default:System.out.println("wrong number!"); }}