java - 基础 - 枚举

对象个数固定且有限,可以一一列举出来

本质是private的构造方法,加上public static final 属性;

数据类型: enum 默认继承Enum

所以 public enum EnumTest 后面不能跟extends继承其他类

属性:

name   枚举对象的名字

ordinal  枚举对象的位置,类似index

常用方法:

扫描二维码关注公众号,回复: 7396636 查看本文章

valueOf() 通过给定的枚举名字获得枚举对象

values 获得全部枚举对象,返回一个数组

compareTo() 比较两个枚举对象

toString 没有final修饰,可以重写。

枚举也可以自己修改属性和方法

1.必须在第一行描述枚举的内容,内容与构造方法格式一致

2.构造方法必须为private

3.其他和普通类基本一样。

package enumTest;

public enum EnumTest {//里面的成员都是EnumTest类型的变量,name()默认为Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Satday
    //必须在第一行描述内容,分号结尾
    Sunday("SundayName",1,1),Monday("MondayName",22,2),Tuesday("TuesdayName",33,3),Wednesday("WednesdayName",44,4),Thursday("ThursdayName",55,5),Friday("FridayName",66,6),Satday;


    public String name;  //Enum自身带name属性,private final String name;
    private int index;
    public int age;

    public String getName(){
        return this.name;
    }

    private EnumTest(){ //这是默认的构造方法,不加上的话,第一行的枚举内容必须是都是    名字(name,age,index)格式,加了这个Satday才可以直接这么写
    }

    private EnumTest(String name, int age, int index){ //枚举的构造方法必须是private,可以方法重载
        this.name = name;
        this.age = age;
        this.index = index;
    }
}
package enumTest;

public class EnumTestMain {

    public static void main(String[] args) {
        EnumTest sun = EnumTest.Sunday;
        System.out.println("sun = " + sun);

        EnumTest mon = EnumTest.valueOf("Monday");//valueOf可以根据枚举内对象的name返回对应的对象
        System.out.println("mon.age = " + mon.age);//自定义属性age
        System.out.println("mon = " + mon.name());//Enum自带方法,返回对象名字
        System.out.println("mon = " + mon.getName());//自定义方法,返回自定义属性name,与Enum的没有发生冲突,自己定义的这个name虽然和Enum的name重名了,但是并没有互相影响

        mon.name = "Monday修改后的name";
        System.out.println("mon = " + mon.name());//Enum自带方法,返回对象名字
        System.out.println("mon = " + mon.getName());//自定义方法,返回自定义属性name




        System.out.println("-------------------------------");//values把enum内容变成数组返回
        EnumTest[] eArr = EnumTest.values();

        for(EnumTest e: eArr){
            System.out.println(e.name());
        }

        System.out.println("-------------------------------");//枚举可以用switch判断
        switch(sun){
            case Sunday:
                System.out.println("swtch 判断 sun = Sunday");
                break;
            case Monday:
                System.out.println("swtch 判断 sun = Monday");
                break;
            case Tuesday:
                System.out.println("swtch 判断 sun = Tuesday");
                break;
            case Wednesday:
                System.out.println("swtch 判断 sun = Wednesday");
                break;
            case Thursday:
                System.out.println("swtch 判断 sun = Thursday");
                break;
            case Friday:
                System.out.println("swtch 判断 sun = Friday");
                break;
            case Satday:
                System.out.println("swtch 判断 sun = Satday");
                break;
        }
    }

}

猜你喜欢

转载自www.cnblogs.com/clamp7724/p/11611186.html