4. switch语句
switch格式:
switch( 表达式的值){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
......
default:
语句体n+1;
break;
}
格式解释:
- switch表示这是switch语句,表达式取值byte short int char String 枚举
- case 后面跟的是要和表达式的值进行比较的值,可以为整数,但绝不可以是实数,如:case 1.2 是不合法的
- 语句体可以是一条语句或多条语句
- break 表示中断,结束的意义,可以结束switch语句
- default语句表示所有的情况都不匹配的时候,就执行该块的内容,和if语句的else相似
执行流程:
- 首先计算表达式的值
- 其次,和case依次做比较,一旦有对象的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 最后,如果所有的case都和表达式的值不匹配,就会执行defalut语句体部分,然后switch执行完毕。
注意事项:
- case后面只能是常量,不能是变量,而且多个case后面不能出现相同的值
- default 可以省略, 但不建议
- break 可以省略,但程序依旧会继续判断执行,不会结束
- default的位置不一定在最后
- switch语句结束的条件,遇到break或者执行到末尾
示例代码:
class Demo{
public static void main(String[] args){
int week = 6;
switch(week){ //指定switch语句的表达式为变量week
case 1: //定义case语句中的常量为1
System.out.println("周一");
break;
case 3: //定义case语句中的常量为3
System.out.println("周三");
break;
case 6: //定义case语句中的常量为6
System.out.println("周六");
break;
case 0: //定义case语句中的常量为0
System.out.println("周日");
break;
default://default语句
System.out.println("I don't know");
}
}
}
//输出 case 6:中的语句
选择结构switch和if语句的各自使用场景
在做判断的时候,我们有两种选择,if语句和switch语句。
if语句的使用场景:
- 针对结果是boolean类型的判断
- 针对单一值进行判断,也可以对区间值进行判断
switch语句的使用场景:
- 针对单一值进行判断
习题
package com.openlab.day03;
import java.util.Scanner;
public class Home08 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int year = s.nextInt();
int month = s.nextInt();
int day = s.nextInt();
if(month==1) {
month=13;
year-=1;
}else if(month==2){
month=14;
year-=1;
}
int k = year%100 , j = year/100;
int h =(day+ (26*(month+1))/10 +k+k/4+j/4+5*j)%7;
//根据h的值选择
switch (h) {
case 2:
System.out.println("Day of the week is Monday");
break;
case 3:
System.out.println("Day of the week is Tuesday");
break;
case 4:
System.out.println("Day of the week is Wednesday");
break;
case 5:
System.out.println("Day of the week is Thursday");
break;
case 6:
System.out.println("Day of the week is Friday");
break;
case 0:
System.out.println("Day of the week is Saturday");
break;
case 1:
System.out.println("Day of the week is sunday");
break;
}
}
}