枚举类

创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)
枚举适用场合:
当对象个数已知并且有限
创建枚举对象

public enum Sex {
	//给枚举对象加入属性,通过getXxx()获取属性
    MALE("男"),
    FEMALE("女");
    private String cnName;

    public String getCnName() {
        return this.cnName;
    }
    public String test(){
        return "ok";
    }
    Sex(String cnName) {
        this.cnName=cnName;
    }
}

常用方法:

public static void main(String[] args) {
        //获取枚举对象的序号,序号从0开始
        System.out.println(Sex.MALE.ordinal());
        System.out.println(Sex.FEMALE.ordinal());
        //把枚举对象转换为字符串
        System.out.println(Sex.MALE.name());
        System.out.println(Sex.FEMALE.name());
        //把字符串转为枚举对象
        System.out.println(Sex.valueOf("MALE"));
        System.out.println(Sex.valueOf("FEMALE"));
        //虚拟机中枚举对象只有一个,可以用==连接
        System.out.println(Sex.valueOf("MALE")==Sex.MALE);
        //打印所有枚举对象
        for (Sex value : Sex.values()) {
            System.out.println(value);
        }
        //枚举对象调用构造方法
        System.out.println(Sex.MALE.getCnName());
        System.out.println(Sex.FEMALE.getCnName());
        //枚举对象调用方法
        System.out.println(Sex.MALE.test());

    }

注意:枚举个数是固定,有限,因此构造方法不能是公共的,否则会无限制创建对象,有参构造要和创建枚举对象相匹配。

int compareTo(E o) ,比较此枚举与指定对象的顺序

public enum Day {
    MON, TUE, WED, THU, FRI, SAT, SUN;
}
public static void main(String[] args) {
        Day test = Day.TUE;
        //int compareTo(E o) ,比较此枚举与指定对象的顺序
        int i = test.compareTo(Day.MON);
        switch (i){
            case -1:
                System.out.println("TUE 在 MON 之前");
                break;
            case 1:
                System.out.println("TUE 在 MON 之后");
                break;
            default:
                System.out.println("TUE 与 MON 在同一位置");
                break;
        }
    }

和switch语句配合使用

Day tue = Day.TUE;
        switch (tue) {
            case MON:
                System.out.println("今天是星期一");
                break;
            case TUE:
                System.out.println("今天是星期二");
                break;
            // ... ...
            default:
                System.out.println(tue);
                break;
        }

EnumSet, EnumMap的使用

 public static void main(String[] args) {
        // EnumSet的使用
        EnumSet<Day> weekSet = EnumSet.allOf(Day.class);
        for (Day day : weekSet) {
            System.out.println(day);
        }

        // EnumMap的使用
        EnumMap<Day, String> weekMap = new EnumMap(Day.class);
        weekMap.put(Day.MON, "星期一");
        weekMap.put(Day.TUE, "星期二");
        // ... ...
        Iterator<Map.Entry<Day, String>> iterator = weekMap.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<Day, String> next = iterator.next();
            System.out.println(next.getKey() + "==" + next.getValue());

        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值