java基础学习 day14(switch)

1. switch语句
* 格式:
switch (表达式){
  case 值1:
   语句体1;
   break;
  case 值2:
   语句体2;
   break;
  …
  default:
   语句体n+1;
   break;
}
* 执行流程:

Ⅰ. 首先计算表达式的值,得出一个具体的值,并不是一个布尔类型的了。

Ⅱ. 依次和case后面的值进行比较,如果匹配上,就会执行相应的语句,在执行的过程中,遇到break就会结束整个switch语句。

Ⅲ. 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,之后遇到default里的break语句,再结束整个switch语句。
* 格式说明:

|. 表达式:取值为byte,short,int,char。JDK5以后可以是枚举,JDK7以后可以是String。(将要匹配的值)

Ⅱ. case:后面跟的是要和表达式进行比较的值,case后的值的类型要跟switch后()里的值的类型一致。(被匹配的值)

Ⅲ. break:表示中断,结束的意思,用来结束switch语句。

Ⅳ. default:表示所有的情况都不匹配时,就执行该处的内容,和if语句中的else类似。它是一个特殊的case

Ⅴ. case后面跟的值只能是字面量(常量),不能是变量。

Ⅵ. case后面跟的值不允许重复。

* 注意事项:

a. 注释快捷键为:Ctrl + shift + /

b. default可以写在switch语句的任意位置,但通常习惯写在最后。(不论default写在哪,程序都是先匹配case值,等所有case值都匹配结束后,若没有匹配上,再去找default)

c. default可以省略,语法不会报错,但通常习惯不省略,因为省略后,相当于default里的语句为空,若所有的case都不匹配,就不会执行任何语句,直接结束switch语句。

d. case穿透:语句体中没有写break导致的。switch语句的执行流程是:首先拿着小括号中表达式的值依次和所有的case进行匹配,如果匹配上了,就会执行对应的语句体,如果此时语句体中有break语句了,就会结束整个switch语句,如果这个语句体没有break语句,程序就会继续执行下一个case的语句体,一直到遇到break语句,或者右大括号位置。

  如果default的语句体中没有break,且default的位置在两个case之间的话,当程序没有匹配到case的值时,它就会执行default的语句体,之后他会继续执行default的下一个case语句体,并一直到遇到break语句,或者右大括号位置。

  使用场景:如果多个case的语句体重复了,我们可以考虑用case穿透来简化代码。

e. switch的新特性(jdk1.12之后才有的):

//老写法
int number = 1switch (number){
    case 1:
        System.out.println(“一”)breakcase 2:
        System.out.println(“二”)break;
    case 3:
        System.out.println(“三”)break;
    defaultSystem.out.println(“没有这个数字”);
        break;
}
//新写法,break可以省略,也没有case穿透现象。
int number = 1switch (number){
    case 1 -> {
        System.out.println(“一”)}
    case 2 -> {
        System.out.println(“二”)}
    case 3 -> {
        System.out.println(“三”)}
    default -> {
        System.out.println(“没有这个数字”);
    }
}
//若语句体中只有一条语句,大括号也可以不写
int number = 1switch (number){
    case 1 -> System.out.println(“一”)case 2 -> System.out.println(“二”)case 3 -> System.out.println(“三”)default -> System.out.println(“没有这个数字”);
}
//在旧jdk版本下,需要使用case穿透现象的写法。
Scanner sc = new Scanner (System.in);
int number = sc.nextInt()switch (number){
    case 1: 
    case 2: 
    case 3: 
    case 4: 
    case 5: 
        System.out.println(“工作日”);
        break;
    case 6: 
    case 7:
        System.out.println(“休息日”);
        break;
    default:
        System.out.println(“没有这个星期”);
        break;
}
//若在新jdk版本下,需要使用case穿透现象来简化代码可以这样
Scanner sc = new Scanner (System.in);
int number = sc.nextInt()switch (number){
    case 12345 -> System.out.println(“工作日”);
    case 67 -> System.out.println(“休息日”);
    default -> System.out.println(“没有这个星期”);
}

f. switch和if的第三种格式的使用情况:
  if的第三种格式:一般用于对范围的判断。
  switch:一般用于把有限个具体的数一一列举出来,让我们任选其一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丿罗小黑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值