java中switch的使用及思维梳理

Java switch 详解
本文详细介绍了 Java 中 switch 语句的使用方法,包括其基本语法、执行流程、常见误区及如何正确使用 break 语句来避免连续执行多个 case 的情况。此外还探讨了 JDK 1.7 后新增的对 String 类型的支持。

 

 

java中有两个经常用于条件判断的方法,一个是if{}else{},另一个就是switch()了。总的来说因为switch可以直接一对一满足条件,不满足条件的情况是不会执行的的所以switch的效率会相对if{}else{}更高一些,而且这两个方法是可以无门槛互换的。

 

 

switch的使用:

 

  • 能用于switch判断的类型有:byte、short、int、char(JDK1.6),还有枚举类型,但是在JDK1.7后添加了对String类型的判断
  • case语句中少写了break,编译不会报错,但是会一直执行之后所有case条件下的语句而不再判断,直到default语句
  • 若果没有符合条件的case就执行default下的代码块,default并不是必须的,也可以不写

 

    switch(mark) {
            case 0:
                System.out.println(mark);
    break;
            case 10:
                System.out.println(mark);
          break;
            case 20:
                System.out.println(mark);
                break;
            }

 

这里mark值是判断条件,case 对应的是具体的值,如果mark=0或者mark=10或者mark=20,相对应的条件成立就会执行case中的程序

 

在这里有一个思维误区很容易出错,看下面代码:

switch(mark) {
            case 0:
                System.out.println(mark);
                mark = 10;
                break;
            case 10:
                System.out.println(mark);
                mark = 20;
                break;
            case 20:
                System.out.println(mark);
                mark = 30;
                break;
            }

 

这段代码比和上面的代码相比,在每个case中会重新给mark赋值,让这个重新赋的值和下一步的case相对应。

错误思维:如果mark的初始值是0,这个switch程序会执行三次,执行的顺序依次是0,10,20。

 

因为我们在每一步的case中都重新给mark赋值了,所以不熟悉的很容易就会觉得这个switch会从上往下执行,凡是满足条件的步骤都会执行。其实这个switch是只会执行一次的,因为每个case后面都跟了一个break,这个break的作用就是跳出当前循环也就是跳出当前的switch,所以这个switch只会执行mark初始值对应的那个case,后面的步骤不会继续执行。如果要想三个步骤都依次执行需要在switch外面加上一个while循环,在一定的条件内重复执行switch:如下加上while

while(mark<=30) {
            switch(mark) {
            case 0:
                System.out.println(mark);
                mark = 10;
                break;
            case 10:
                System.out.println(mark);
                mark = 20;
                break;
            case 20:
                System.out.println(mark);
                mark = 30;
                break;
            }
        }

 

 

 

 

总结:每次进入switch,如果每个case后面都用break跳出当前循环了,则不管mark的值怎么变,只会执行一个case

 

转载于:https://www.cnblogs.com/lyd447113735/p/8855195.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值