成长计划 巩固篇」Switch 支持的数据类型结合枚举怎么使用

正文

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

语法格式如下:

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

这里的 type 都支持哪些类型呢?

  • 基本数据类型:byte, short, char, int

  • 包装数据类型:Byte, Short, Character, Integer

  • 枚举类型:Enum

  • 字符串类型:String(Jdk 7+ 开始支持)

基本数据类型和字符串很简单不用说,下面举一个使用包装类型和枚举的,其实也不难,注意只能用在 switch 块里面。

使用包装类型

Integer value = 2;
switch (value) {
    case 1:
        System.out.println("第一名");
        break;
    case 2:
        System.out.println("第二名");
        break;
    default:
        System.out.println("default");
}

使用枚举类型

我们经常在编码存在不同判断的情况 switch 也经常和一些基础类型和包装类型一起去使用 但是为了方便管理我们也可以使用枚举

枚举类

public enum UserSearchTypeEnums {

    PLATE_USER("30", "代理商"),
    NOT_IN_DATA("31", "非存在用户"),;
    UserSearchTypeEnums(String code, String value){
        this.code = code;
        this.value = value;
    }
    private String code;
    private String value;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public static UserSearchTypeEnums getByCode(String code){
        for(UserSearchTypeEnums enumObject: UserSearchTypeEnums.values()){
            if(code.equals(enumObject.getCode())){
                return enumObject;
            }
        }
        return  null;
    }

    public static UserSearchTypeEnums getByValue(String value){
        for(UserSearchTypeEnums enumObject: UserSearchTypeEnums.values()){
            if(value.equals(enumObject.getValue())){
                return enumObject;
            }
        }
        return  null;
    }
}

结合枚举使用案例

UserSearchTypeEnums blaDataRulesEnums = UserSearchTypeEnums.getByCode(brand.getFromType());
if (blaDataRulesEnums != null) {
    switch (blaDataRulesEnums) {
        case PLATE_USER:
            this.filterFromType(queryWrapper, brand);
            break;
        case NOT_IN_DATA:
            this.filterNoIn(queryWrapper, brand);
            break;
    }
}

使用 switch case 语句也有以下几点需要注意。

1、 case 里面必须跟 break,不然程序会一个个 case 执行下去,直到最后一个 break 的 case 或者 default 出现。

1.1、例如:
Switch的穿透

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

如上代码,输出结果为:2,3,4;即使state不为3和4,因为2中匹配后没有break,则后续代码则不会进行case判断,直到遇到break为止。

2、case 条件里面只能是常量或者字面常量。

3、default 语句可有可无,最多只能有一个。

你可能感兴趣的:(随手记,java,算法,c++)