java学习之Enum的成员方法

文章详细介绍了Java中enum的用法,包括name()、ordinal()、values()、valueOf()方法的使用,以及compareTo()方法进行枚举常量比较。此外,文章还展示了如何声明和遍历枚举数组,以及枚举类实现接口的例子。
摘要由CSDN通过智能技术生成

目录

一、方法列表

 二、举例说明

二、课堂练习

三、enum使用细节


一、方法列表

 二、举例说明

以Enumeration03中的Season2为例

package enum_;
/**
 * @author gqq
 * @version 1.0
 * 演示 Enum 类的各种方法的使用
 */
public class EnumMethod {
    public static void main(String[] args) {
        //使用 Season2 枚举类, 来演示各种方法
        Season2 autumn = Season2.AUTUMN;
        //1.name方法:输出枚举对象的名称
        System.out.println(autumn.name());

        //2.ordinal:得到当前枚举常量的次序,即编号(从0开始)
        System.out.println(autumn.ordinal());//是第四个,所以输出3

        //3.从反编译中可以看到values方法
        //public static enum_.Season2[] values();
        //返回一个Season2数组,包含所有枚举对象
        Season2[] values = Season2.values();
        System.out.println("===遍历取出枚举对象(增强for)===");
        for(Season2 season : values){
            System.out.println(season);
        }

        //4.valueOf方法,隐藏方法
        //public static enum_.Season2 valueOf(java.lang.String);
        //将字符串转换成对象,要求字符串必须为已有的常量名,否则报异常
        //1.根据输入的AUTUMN到 Season2 的枚举对象去查找
        //2.如果找到了, 就返回, 如果没有找到, 就报错
        Season2 season2 = Season2.valueOf("AUTUMN");
        System.out.println("season2=" + season2);
        //Season2中不存在对象 GQQ ,运行就会报错
//        Season2 season21 = Season2.valueOf("GQQ");
//        System.out.println(season21);

        //5.compareTo: 比较两个枚举常量, 比较的就是编号
        //Season2.AUTUMN的编号为3,Season2.SPRING编号为0,最后返回的就是3-0,即3;
        /*
            public final int compareTo(E o) {
                return self.ordinal - other.ordinal;
            }
            Season2.AUTUMN 的编号[3] - Season2.SPRING 的编号[0]
         */
        System.out.println(Season2.AUTUMN.compareTo(Season2.SPRING));
        //增强for循环
//        int[] arr = {1,2,9};
//        System.out.println("====演示增强for循环===");
//        for(int i : arr){
//            System.out.println(i);
//        }

    }
}

二、课堂练习

声明 Week 枚举类, 其中包含星期一至星期日的定义; MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY, SUNDAY;使用 values 返回所有的枚举数组, 并遍历 , 输出左图效果

package enum_;

public class EnumExercise02 {
    public static void main(String[] args) {
        Week[] values = Week.values();
        System.out.println("==所有星期的信息如下==");
         //增强for循环格式  :for(变量数据类型 变量名:数组名)
        for(Week week:values){
            System.out.println(week);
        }
    }
}
enum Week{
    MONDAY("星期一"),TUESDAY("星期二"),WEDNESDAY("星期三"),
    THURSDAY("星期四"),FRIDY("星期五"),SATURDAY("星期六"),SUNDAY("星期日");
    public String date;
    private Week(String date) {
        this.date = date;
    }

    public String getDate() {
        return date;
    }
    
    @Override
    public String toString() {
        return date;
    }
}

 注意事项:

1.需要使用values方法,接收返回枚举常量的数组

2.使用强循环,输出枚举常量

3.输出的是对象的属性,而不是枚举常量名,所以需要在枚举类中重写toString方法,然后需要根据输出的内容,修改toString方法中return的内容

三、enum使用细节

1) 使用 enum 关键字后, 就不能再继承其它类了, 因为 enum 会隐式继承 Enum, 而 Java 是单继承机制
2) 枚举类和普通类一样, 可以实现接口, 如下形式。
enum 类名 implements 接口 1, 接口 2{}

package enum_;

public class EnumDetail {
    public static void main(String[] args) {
        Season3.CLASSICMUSIC.playing();
    }

}
class A{

}
//1.使用 enum 关键字后, 就不能再继承其它类了, 因为 enum 会隐式继承 Enum, 而 Java 是单继承机制。
//2.枚举类和普通类一样, 可以实现接口
interface IA{
    void playing();
}
enum Season3 implements IA{ //extends A{
    CLASSICMUSIC;
    @Override
    public void playing() {
        System.out.println("播放好听的音乐...");
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值