基础巩固1--switch case default

本文详细解析了Java中switch case语句的工作原理,包括匹配过程、执行流程及default语句的作用,通过具体代码示例展示了不同情况下switch case的执行结果。

网络上写了很多 default 的位置不同,对执行结果的影响,自认为理解过于复杂,这里按照自己的理解整理一下
一、只有switch case 情况
①从上往下载case中找到与switch匹配的值(case中的匹配值不需要升序或者降序排列),找到后并往下执行语句(当然执行语句也可以为空,表示值进行判断不需要执行语句的情况)

public static void main(String[] args) {
        int i = 1;
        switch (i) {
            case 2:
                System.out.println("2");
            case 1:
                System.out.println("1");
            case 0:
                System.out.println("0");
                break;
            case 3:
                System.out.println("3");
            case 4:
                System.out.println("4");
                break;

        }
    }
1
0

存在不需要执行语句的情况,如下

public static void main(String[] args) {
        int i = 1;
        switch (i) {
            case 2:
                System.out.println("2");
            case 1:
            case 0:
                System.out.println("0");
                break;
            case 3:
                System.out.println("3");
            case 4:
                System.out.println("4");
                break;
        }
    }
0

② 如果没有匹配上任何case,则不执行任何语句,结果为空

 public static void main(String[] args) {
        int i = 8;
        switch (i) {
            case 2:
                System.out.println("2");
            case 1:
            case 0:
                System.out.println("0");
                break;
            case 3:
                System.out.println("3");
            case 4:
                System.out.println("4");
                break;
        }
    }

Process finished with exit code 0

一、存在switch case default的情况
① 首先在匹配过程中,先可以假想defautlt 不存在(default的位置没有任何影响),匹配case,匹配成功,接下来就是执行阶段,从匹配成功的入口往下执行,直到遇到第一个break跳出(注意往下执行的语句包含default语句)

public static void main(String[] args) {
        int i = 1;
        switch (i) {
            case 2:
                System.out.println("2");
            case 1:
                System.out.println("1");
            default:
                System.out.println("default");
            case 0:
                System.out.println("0");
                break;
            case 3:
                System.out.println("3");
            case 4:
                System.out.println("4");
                break;
        }
    }
1
default
0

② 如果case没有匹配成功,则执行default 语句(以dafault为入口),从上往下执行,并遇到第一个break(没有就执行到末尾)跳出(这里好像default的位置影响了结果,其实这样理解太复杂了,就是按照匹配和执行两部分进行分析就好了)

public static void main(String[] args) {
        int i = 8;
        switch (i) {
            default:
                System.out.println("default");
            case 2:
                System.out.println("2");
            case 1:
                System.out.println("1");
            case 0:
                System.out.println("0");
                break;
            case 3:
                System.out.println("3");
            case 4:
                System.out.println("4");
                break;
        }
    }
default
2
1
0

下面的代码就表示,只有符合case的任一结果就会得到返回值

switch (user.getUsetype()) {
                        case SysUserEntity.USERTYPE_HOUSEHOLD:
                        case SysUserEntity.USERTYPE_BOTH_EH:
                        case SysUserEntity.USERTYPE_AGED:
                        case SysUserEntity.USERTYPE_BOTH_EA:
                            return Result.fail(CodeConstant.PHONE_NUM_EXISTS);
                    }
  public static void main(String[] args) {
        int i = 8;
        switch (i) {
            case 2:
                System.out.println("2");
            case 1:
                System.out.println("1");
            case 0:
                System.out.println("0");
                break;
            default:
                System.out.println("default");
            case 3:
                System.out.println("3");
            case 4:
                System.out.println("4");
                break;
        }
    }
3
4

2019.9.5 补充:
switch…case… 与return整合使用

switch (sysUser.getUsetype()) {
            //账号注销状态,无法登录
            case SysUserEntity.USERTYPE_CANCEL:
                return Result.fail(CodeConstant.USER_CANCEL);
            //员工无法登录
            case SysUserEntity.USERTYPE_EMPLOYEE:
                return Result.fail(CodeConstant.CUSTOMER_LOGIN_LIMIT);
        }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值