Java枚举类型enum的详解及使用

yizhihongxing

Java枚举类型enum的详解及使用

什么是枚举类型enum

Java中的枚举类型enum定义一个类,列出该类的所有实例,这些实例的值是有限的、预定义的。

是一组有名字的值的集合,它们常被用作程序中的常量或者可选择的值。

Java的枚举(enum)是一种比传统的常量更为灵活、可扩展的类型。

枚举类型enum的使用

枚举的定义

enum可以在类或者包的内部定义。

定义枚举时,第一行列出枚举的所有元素。每个枚举都是以逗号分隔的名称列表结束。在此之后,您可以将任何普通字段或方法添加到枚举中。

下面的例子定义了车型enum

public enum CarModel {
   SEDAN, COUPE, WAGON, SPORTS, SUV
}

枚举的使用

当定义枚举类型时,编译器会自动为我们创建一个含有我们预定义了的常量的类,并为它们赋上值。我们可以通过枚举类型的名称来访问这些常量。

CarModel sports = CarModel.SPORTS;

枚举的遍历

Java支持对枚举类型进行遍历。从Java 5开始,我们可以使用枚举的静态方法values()返回一个包含所有枚举值的数组,然后使用for-each循环来遍历这个数组。

for (CarModel cm : CarModel.values()) {
   System.out.println(cm);
}

枚举的方法

在枚举中,你也可以定义方法。

public enum CarModel {
   SEDAN(4), COUPE(2), WAGON(4), SPORTS(2), SUV(4);

   private final int numWheels; 

   private CarModel(int numWheels) {
       this.numWheels = numWheels;
   }

   public int getNumWheels() { 
       return numWheels; 
   }
}

上面的例子中,我们为每个枚举定义了一个numWheels,并且定义了一个返回numWheels的方法。

示例

下面通过两个示例,进一步说明枚举类型的使用。

示例一:计算器

public class Calculator {
    enum Operator {
        ADD, SUBTRACT, MULTIPLY, DIVIDE
    }

    static int calculate(int a, int b, Operator op) {
        switch (op) {
            case ADD:
                return a + b;
            case SUBTRACT:
                return a - b;
            case MULTIPLY:
                return a * b;
            case DIVIDE:
                return a / b;
            default:
                throw new AssertionError("Unknown operator: " + op);
        }
    }

    public static void main(String[] args) {
        int a = 10, b = 5;

        System.out.println(a + " + " + b + " = " + calculate(a, b, Operator.ADD));
        System.out.println(a + " - " + b + " = " + calculate(a, b, Operator.SUBTRACT));
        System.out.println(a + " * " + b + " = " + calculate(a, b, Operator.MULTIPLY));
        System.out.println(a + " / " + b + " = " + calculate(a, b, Operator.DIVIDE));
    }
}

在这个示例中,我们使用枚举类型Operator。我们定义了四种运算符:ADDSUBTRACTMULTIPLYDIVIDE。在calculate()方法中,我们使用了switch语句,根据操作符来计算两个数字。

示例二:季节

public class Season {
    enum SeasonName {
        SPRING, SUMMER, FALL, WINTER
    }

    static String getSeasonDescription(SeasonName seasonName) {
        switch (seasonName) {
            case SPRING:
                return "The weather is getting warmer.";
            case SUMMER:
                return "The weather is hot.";
            case FALL:
                return "The leaves are changing color.";
            case WINTER:
                return "The weather is cold and it may snow.";
            default:
                throw new AssertionError("Unknown season name: " + seasonName);
        }
    }

    public static void main(String[] args) {
        SeasonName[] seasons = SeasonName.values();

        for (SeasonName season : seasons) {
            System.out.println(season + ": " + getSeasonDescription(season));
        }
    }
}

在这个示例中,我们使用枚举类型SeasonName。我们定义了四个季节:SPRINGSUMMERFALLWINTER。在getSeasonDescription()方法中,我们根据季节来返回一个字符串,简要描述该季节所代表的天气特点。

main()方法中,我们使用for循环来遍历所有季节,并且输出它们的名称和描述。

结论

枚举类型enum是一种非常方便、易于使用、可扩展的类型。在Java 5之后,它成为了Java程序员的标配。在开发程序时,尽量使用枚举类型,可以极大地提高程序的可读性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java枚举类型enum的详解及使用 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • POI导出Excel报错No such file or directory的解决方法

    针对“POI导出Excel报错No such file or directory”的解决方法,以下是详细的攻略。 问题描述 在使用POI导出Excel时,可能会出现报错“java.io.FileNotFoundException: No such file or directory”,这种错误通常出现在将Excel文件导出到指定路径时。 原因分析 这个报错通…

    Java 2023年5月19日
    00
  • 如何自己动手写SQL执行引擎

    如何自己动手写SQL执行引擎 要自己动手写一个SQL执行引擎,需要掌握以下几个步骤: 设计关系型数据库 构建SQL解析器 构建执行计划 执行查询语句 下面逐个步骤进行详细讲解: 设计关系型数据库 在设计关系型数据库时,需要考虑以下几个方面: 数据表设计:每个表需要设计对应的字段、数据类型、主键等信息。 索引设计:需要根据查询需求设计合适的索引,提高查询效率。…

    Java 2023年6月16日
    00
  • Java两整数相除向上取整的方式详解(Math.ceil())

    Java中两个整数相除可能不是整数,因此需要进行取整。向上取整就是将小数部分向上一位取整到最近的整数。 Math类提供了向上取整方法 ceil()。 方法定义 public static double ceil(double a) 参数 a:需要向上取整的数。 返回值 返回double类型,表示a向上取整的结果。 示例说明 示例1 接下来我们看一个例子:计算…

    Java 2023年5月26日
    00
  • 使用SpringBoot配置https(SSL证书)

    使用 Spring Boot 配置 HTTPS (SSL 证书) 的完整攻略 在本文中,我们将详细介绍如何使用 Spring Boot 配置 HTTPS (SSL 证书)。我们将介绍 HTTPS 的概念、配置方式和提供两个示例。 HTTPS 概念 HTTPS (Hyper Text Transfer Protocol Secure) 是一种通过 SSL/TL…

    Java 2023年5月15日
    00
  • java获取本月日历表的方法

    要获取本月的日历表,可以使用Java中的Calendar类来实现。下面是详细步骤: 1.获取当前月份的第一天我们可以使用Calendar类的getActualMinimum()方法,将日历字段设置为该字段可能的最小值,例如我们将日历字段设置为月份的最小值,即Calendar.MONTH,然后使用getActualMinimum(Calendar.DATE)方…

    Java 2023年5月20日
    00
  • PHP中auto_prepend_file与auto_append_file用法实例分析

    PHP中auto_prepend_file与auto_append_file用法实例分析 在PHP中,auto_prepend_file和auto_append_file是两个特殊的配置选项,它们分别用于在PHP脚本执行前和执行后自动执行指定的PHP脚本文件。这两个配置选项通常被用于实现一些公共功能或初始化操作。本文将详细讲解auto_prepend_fil…

    Java 2023年6月15日
    00
  • Java 数据库连接池 Tomcat介绍

    Java 数据库连接池 Tomcat介绍 什么是数据库连接池 数据库连接池(Database Connection Pool)是一种在应用程序和数据库之间建立和维护连接的技术。它可以减轻应用程序频繁创建和销毁数据库连接的负担,从而提高应用程序的性能。 Tomcat中的数据库连接池 在Tomcat中,我们可以使用Tomcat提供的JDBC连接池,来实现对数据库…

    Java 2023年5月19日
    00
  • SpringBoot2.0整合jackson配置日期格式化和反序列化的实现

    一、引言 在开发web应用中,我们经常会涉及到日期类型的数据,在服务器的日期格式与前端的日期格式不同的情况下,我们必须对日期进行格式化处理。本篇文章将介绍如何在SpringBoot2.0项目中整合jackson实现日期格式化和反序列化的功能。 二、依赖 在pom.xml中添加如下依赖: <dependencies> <dependency&…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部