枚举的概念与使用方法

枚举的概念与使用方法

为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?
这是枚举中定义常量的方法:

enum EnumTest {
    MON, TUE, WED, THU, FRI, SAT, SUN;
}
//遍历所有的枚举常量
public class demo1 {
    public static void main(String[] args) {
   		 //返回具有指定名称的指定枚举类型的枚举常量。
		System.out.println(EnumTest.valueOf("MON"));
        for(EnumTest EnumTest : EnumTest.values()){
            System.out.println(EnumTest);
        }
    }
}

这是通常定义常量的方法:

class EnumTest{
    public final static String MON = "星期一";
    public final static String TUE = "星期二";
    public final static String WED = "星期三";
    public final static String THU = "星期四";
    public final static String FRI = "星期五";
    public final static String SAT = "星期六";
    public final static String SUN = "星期日";
}

能看出枚举不能直接定义具体的值,但是枚举类型提供了构造函数,我们可以通过构造函数和覆写toString 方法来实现

enum EnumTest {
    MON("星期一",1),
    TUE("星期二",2),
    WED("星期三",3),
    THU("星期四",4),
    FRI("星期五",5),
    SAT("星期六",6),
    SUN("星期日",7);
    private String description;
    private int id;

    EnumTest(String description, int id) {    
    //很容易理解我们这里需要什么数据类型就生成相应参数的构造方法
        this.description = description;
        this.id = id;
    }

    @Override
    public String toString() {
        return "EnumTest{" +
                "description='" + description + '\'' +
                ", id=" + id +
                '}';
    }
}
public class demo1 {
    public static void main(String[] args) {
        for(EnumTest EnumTest : EnumTest.values()){
            System.out.println(EnumTest.toString());
        }
    }
}

通过查看文档了解到enum 实现了comparable借口所以枚举类型本身是可以排序的通过代码来了解一下:
在这里插入图片描述

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

enum EnumTest{
    MON,TUE,WED;
}
public class demo1 {
    public static void main(String[] args) {
        Set<EnumTest> set = new TreeSet<EnumTest>();
        set.add(EnumTest.MON);
        set.add(EnumTest.WED);
        set.add(EnumTest.TUE);
        Iterator iterator = set.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

通过结果我们可以看出set集合自动排序了

猜你喜欢

转载自blog.csdn.net/weixin_43904316/article/details/88936758
今日推荐