【Java switch case 语句default位置问题】你真的了解switch吗

前言

在日常开发中,小伙伴们在使用switch case 语句时,有的习惯不加default,有的将default放在首位,甚至粗心的小伙伴会漏掉break。那么会对代码的运行产生什么影响呢?接下来将对这些情况进行测试。

switch case 语句简介

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

语法

switch(expression){
    
    
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

五种情况测试

一、没有break

代码:

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

输出:

1
2
default

结论:如果 case 语句块中没有 break 语句时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出。.

二、符合条件case中没有break,下一个case中有

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

结论:如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。

三:当default语句在switch首行

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

结论:default语句不会执行

四、default语句在首行,没有符合条件的case

int i = 4;
switch (i) {
    
    
    default:
        System.out.println("default");
    case 0:
        System.out.println("0");
    case 1:
        System.out.println("1");
    case 2:
        System.out.println("2");
}
default
0
1
2

结论:顺序执行。

五、default语句在最前面,有符合条件的case

int i = 1;
switch (i) {
    
    
    default:
        System.out.println("default");
    case 0:
        System.out.println("0");
    case 1:
        System.out.println("1");
    case 2:
        System.out.println("2");
}
1
2

结论:default不执行。

小结

switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。


case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。


当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。


当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。


switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。


default 在没有 case 语句的值和变量值相等的时候执行。default分支不需要 break 语句。

在阿里巴巴开发规范中下面情况属于强制要求:
在一个 switch 块内,每个 case 要么通过 break/return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止;在一个 switch 内,都必须包含一个 default 语句并且放在最后,即使空代码。
在这里插入图片描述

在这里插入图片描述

点赞 收藏 关注
求业之精在于专一

猜你喜欢

转载自blog.csdn.net/qq_35764295/article/details/127509925
今日推荐