第五章枚举

枚举

枚举简介:

使用枚举的方式一

枚举是一种特殊的class,一般用来表示一组常量。

定义一个数字枚举类 数字常量有ONE,TWO,THREE

public enum EnumDemo {
    ONE,TWO,THREE
}

测试类

public class Test {
    public static void main(String[] args) {
        EnumDemo enumOne = EnumDemo.ONE;
        EnumDemo enumTwo = EnumDemo.TWO;
        EnumDemo enumThree = EnumDemo.THREE;
        System.out.println(enumOne);
        System.out.println(enumTwo);
        System.out.println(enumThree);
    }
}

使用枚举的方式二

public class Test {
    public enum EnumDemo {
    ONE,TWO,THREE
	}
    public static void main(String[] args) {
        EnumDemo enumOne = EnumDemo.ONE;
        EnumDemo enumTwo = EnumDemo.TWO;
        EnumDemo enumThree = EnumDemo.THREE;
        System.out.println(enumOne);
        System.out.println(enumTwo);
        System.out.println(enumThree);
    }
}

枚举元素的迭代

public class Test {
    public enum EnumDemo {
        ONE,TWO,THREE
    }
    public static void main(String[] args) {
        for(EnumDemo enumDemo : EnumDemo.values()){
            System.out.println(enumDemo);
        }
    }
}

在switch中使用枚举类

public class Test {
    public enum EnumDemo {
        ONE,TWO,THREE
    }
    public static void main(String[] args) {
        EnumDemo enumDemo = EnumDemo.TWO;
        switch (enumDemo){
            case ONE:
                System.out.println("1");
                break;
            case TWO:
                System.out.println("2");
                break;
            case THREE:
                System.out.println("3");
                break;
        }
    }
}

方法分析

实际上定义一个枚举类,通过对上面数字枚举类的分析

就是定义了一个下面类似这样的类:

class EnumDemo{
    public static final EnumDemo ONE = new EnumDemo();
    public static final EnumDemo TWO = new EnumDemo();
    public static final EnumDemo THREE = new EnumDemo();
}

enum定义的枚举类默认继承了java.lang.Enum类,并实现了Java.lang.Seriablizable和java.lang.Compareable两个接口

values(),ordinal(),valueOf()方法位于java.lang.Enum类中,分别对这些方法进行介绍。

values()方法

返回枚举类中所有的值

ordinal()方法

可以找到每个枚举常量的索引,就像数组索引一样。

valueOf()方法

返回指定字符串值的枚举常量

valueOf返回的枚举常量,不存在则会报错。

public void methods(){
    EnumDemo enumDemo[] = EnumDemo.values();

    for(EnumDemo data : enumDemo){
        System.out.println(data+"索引为:"+data.ordinal());
    }

    System.out.println(EnumDemo.valueOf("ONE"));
    System.out.println(EnumDemo.valueOf("ON"));
    Exception in thread "main" java.lang.IllegalArgumentException: No enum constant classs.enums.Test.EnumDemo.ON
}

枚举类成员

package classs.enums;
enum Animal{
    DOG,CAT,BULL,SNAKE,SHEEP;

    //构造函数
    private Animal(){
        System.out.println(this.toString());
    }

    public void animalInfo(){
        System.out.println("animal info");
    }
}
public class Test02 {
    public static void main(String[] args) {
        Animal animal = Animal.CAT;
        System.out.println(animal);
        animal.animalInfo();
    }
}
输出结果:
DOG
CAT
BULL
SNAKE
SHEEP
CAT
animal info

通过对上面方法的分析很容易得出下面的结果。

枚举类中抽象方法的实现:

package classs.enums;
enum Number{
    ONE{
        @Override
        public String getNumber() {
            return "ONE";
        }
    },
    TWO{
        @Override
        public String getNumber() {
            return "TWO";
        }
    },
    THREE{
        @Override
        public String getNumber() {
            return "THREE";
        }
    };
    public abstract String getNumber();
}
public class Test03 {
    public static void main(String[] args) {
        Number number[] = Number.values();
        for(Number data : number){
            System.out.println(data.getNumber());
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值