大数据知识体系
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
  • JVM

    • JVM 架构
    • JVM 类加载机制
    • JVM 运行时数据区
    • JVM 垃圾回收机制
    • JVM 性能监控与调优
    • JVM 常见错误
  • Java

    • Java基础

      • Java 基础知识
      • Java 基础 - 枚举类
        • 什么是枚举类
        • 枚举类的创建方式
          • 不使用 enum 关键字
          • 使用 enum 关键字
        • 枚举类的主要方法
      • Java 基础 - 异常处理
      • Java 基础 - 泛型
      • Java 基础 - 反射
      • Java 基础 - 代理模式
      • Java 基础 - 注解
    • Java集合

    • Java并发编程

    • Java 开发规范
  • Scala

    • Scala 概述
  • Python

    • Numpy

      • 初识 Numpy
      • ndarray 的创建方式
      • NumPy 的数据类型
      • NumPy 数组计算
      • 拷贝
      • 索引和切片
      • 数学和统计方法
      • 数组形状变换
      • 通用函数
      • 排序
      • 搜索和计数
      • 线性代数
      • 伪随机数生成
      • 广播
      • 文件输入和输出
    • Pandas

      • 初识 Pandas
      • 认识 Series 和 DataFrame
      • Series 和 DataFrame 增删改查
      • Index对象增删改查
      • 普通列和行Index相互转化
      • 快速查看整体信息
      • 数值运算
      • 合并数据集
      • 数值统计与聚合
      • 分组聚合
      • 分类类型
      • 排序和排名
      • 时间序列
      • 文件输入与输出
      • 缺失值处理
      • 字符串处理
      • pandas sql
      • 其它
  • 语言基础
  • Java
  • Java基础
Will
2022-07-19
目录

Java 基础 - 枚举类

# 什么是枚举类

如果一个类的对象是有限且确定的,那么这个类就是枚举类。比如性别(男女)、季节(春夏秋冬)、星期(星期一 ~ 星期日)等。

在开发过程中,建议使用枚举类代替常量。

# 枚举类的创建方式

在 JDK1.5 之前需要自定义枚举类,JDK1.5 之后可以使用enum关键字定义枚举类。

# 不使用 enum 关键字

class Season{
    private final String NAME;
    private final String DESC;

    private Season(String name, String desc){
        this.NAME = name;
        this.DESC = desc;
    }

    public static final Season SPRING = new Season("春天", "春风又绿江南岸");
    public static final Season SUMMER = new Season("夏天", "映日荷花别样红");
    public static final Season AUTUMN = new Season("秋天", "秋水共长天一色");
    public static final Season WINTER = new Season("冬天", "窗含西岭千秋雪");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 使用 enum 关键字

enum SeasonEnum{
    SPRING("春天", "春风又绿江南岸"),
    SUMMER("夏天", "映日荷花别样红"),
    AUTUMN("秋天", "秋水共长天一色"),
    WINTER("冬天", "窗含西岭千秋雪");

    public final String name;
    public final String desc;

    SeasonEnum(String name, String desc){
       this.name = name;
       this.desc = desc;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

使用枚举类需要注意以下几点

  1. 由于枚举类的对象是固定的,不可能构造出新的对象,所以比较两个枚举类型的对象时,直接使用 "==" 即可。
  2. 由于枚举类的对象是固定的,不能在类的外部创建新对象,所以枚举类的构造器必须是私有的。
  3. 若枚举类定义了带参数的构造器,那么在列出枚举值的时候也要传入相应的参数。
  4. 所有枚举类型都是 java.lang.Enum 类的子类。

# 枚举类的主要方法

由于所有使用了enum关键字的枚举类都默认继承了java.lang.Enum,所以也会拥有父类的方法。Enum 类中的一些方法:

  1. toString():会返回枚举常量名,toString 的逆方法是静态方法 valueOf()。
  2. valueOf():传递枚举常量名给 valueOf(),会返回与之匹配的枚举对象。
  3. values():返回一个包含所有枚举值的数组。
  4. ordinal():返回枚举类中常量的位置,下标从 0 开始。
  5. compareTo(E other) 如果枚举常量出现在 other 之前,返回一个负整数;如果 this==other,则返回 0;否则返回一个正整数。
public class EnumTest {
    public static void main(String[] args) {
        SeasonEnum spring = SeasonEnum.SPRING;
        String s = spring.toString();
        System.out.println(s);

        System.out.println("--------");
        SeasonEnum valueOfSpring = SeasonEnum.valueOf(s);
        System.out.println(spring == valueOfSpring);

        System.out.println("--------");
        SeasonEnum[] values = SeasonEnum.values();
        System.out.println(Arrays.toString(values));

        System.out.println("--------");
        System.out.println(SeasonEnum.SUMMER.ordinal());

        System.out.println("--------");
        System.out.println(SeasonEnum.SUMMER.compareTo(SeasonEnum.WINTER));
    }
}

enum SeasonEnum{
    SPRING("春天", "春风又绿江南岸"),
    SUMMER("夏天", "映日荷花别样红"),
    AUTUMN("秋天", "秋水共长天一色"),
    WINTER("冬天", "窗含西岭千秋雪");

    public final String name;
    public final String desc;

    SeasonEnum(String name, String desc){
       this.name = name;
       this.desc = desc;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

输出:

SPRING
--------
true
--------
[SPRING, SUMMER, AUTUMN, WINTER]
--------
1
--------
-2
1
2
3
4
5
6
7
8
9
上次更新: 2023/11/01, 03:11:44

← Java 基础知识 Java 基础 - 异常处理→

Theme by Vdoing | Copyright © 2022-2023 Will 蜀ICP备2022002285号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式