switch中的default

default什么时候会执行?default的位置对执行结果有影响吗?

default只有在case匹配失败的时候才会执行

        int a=4;
        switch (a){
            case 1:
                System.out.println("1");
                break;
            case 2:
                System.out.println("2");
                break;
            case 3:
                System.out.println("3");
                break;
            default:
                System.out.println("default");
                break;
        }

打印结果:default

当然也有特殊情况,就是case匹配成功了,但缺少了break语句

        int a=3;
        switch (a){
            case 1:
                System.out.println("1");
                break;
            case 2:
                System.out.println("2");
                break;
            case 3:
                System.out.println("3");
            default:
                System.out.println("default");
                break;
        }

打印结果:

3

default

default的位置对执行结果有没有影响,关键看default有没有使用break,先看有break的情况下是什么结果

        int a=4;
        switch (a){
            default:
                System.out.println("default");
                break;
            case 1:
                System.out.println("1");
                break;
            case 2:
                System.out.println("2");
                break;
            case 3:
                System.out.println("3");
                break;
        }

打印结果:default

接下来看看不加break是什么结果


        int a=4;
        switch (a){
            default:
                System.out.println("default");
            case 1:
                System.out.println("1");
            case 2:
                System.out.println("2");
                break;
            case 3:
                System.out.println("3");
                break;
                }

打印结果:

default
1

2

可以看到不加break的话会继续向下执行,直到遇到break或return或switch结束为止

default语句不是必须的。   switch case 语句是一个条件选择语句,找到相同的case值做为入口,执行后面的程序;若所有的case都不满足,则找default入口;若未找到则退出整个switch语句。  所以default只是一个备用的入口,有没有都无所谓。 但是对于规范代码来说最好在后面加一个default,参考阿里巴巴的代码规范插件!

猜你喜欢

转载自blog.csdn.net/qq_30054199/article/details/90439779