java中关于switch的坑!

333 阅读1分钟

1、switch(表达式)中的参数有哪些?

Stringcharintbyteshort、枚举

case子句中必须是常量 不能是变量名或者不确定的表达式值;

2、case执行时的情况

满足case条件,先走case中的语句,遇到break跳出switch

    int i = 3;
    switch (i){
        default:
            System.out.println("default");
            break;
        case 1:
            System.out.println("一");
            break;
        case 2:
            System.out.println("二");
            break;
        case 3:
            System.out.println("三");
            break;
        case 4:
            System.out.println("四");
            break;
    }
// 输出:三

当满足case中的条件时,case中没有break, 程序将继续执行下边case(满不满足都会执行) 一直执行到break

    int i = 3;
    switch(i){
        case 1:
            System.out.println("一");
            break;
        case 2:
            System.out.println("二");
            break;
        case 3:
            System.out.println("三");
        case 4:
            System.out.println("四");
            break;
        default :
            System.out.println("default");
            break;
    }
// 输出:三
//      四

当case中没有满足的条件,执行default中的输出

    int i=8;
    switch(i){
        case 1:
            System.out.println("一");
            break;
        default :
            System.out.println("default");
            break;
        case 2:
            System.out.println("二");
        case 3:
            System.out.println("三");
            break;
        case 4:
            System.out.println("四");
            break;
    }
// 输出:default

当case中break和return一起时会报错,return时停止该函数,switch语句块下其他语句都不执行,break是跳出switch语句

        switch(i){
            case 1:
                System.out.println("一");
                break;
//                return;
            default :
                System.out.println("default");
                break;
            case 2:
                System.out.println("二");
            case 3:
                System.out.println("三");
                break;
            case 4:
                System.out.println("四");
                break;
        }
        System.out.println(1);
// 当return时 输出:一
// 当break时  输出:一
//                 1