Java基础教程(15)--枚举类型

??枚举类型定义了一个枚举值的列表,每个值是一个标识符。例如,下面的语句声明了一个枚举类型,用来表示星期的可能情况:

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

??实际上,这个声明定义的类型是一个类,它有7个实例。因此,在比较两个枚举类型的值时,永远不需要调用equals,直接使用“==”就可以了。

??枚举类型的值类似于一个常量,因此,按照惯例拼写都使用大写字母。而枚举类型的命名则与类名的命名规则一致。

??一旦定义了枚举类型,就可以使用这个类型来声明变量:

Day day;

??变量day只能是枚举类型Day中的一个值或null。可以使用下面的语法访问枚举值:

EnumName.ValueName

??例如,下面的语句将枚举值赋给变量day:

day = Day.SUNDAY;

??可以在一个枚举类型的对象上使用下面的方法:

  • public String name();

??返回枚举值的名字。

  • public int ordinal();

??返回枚举值的序号。枚举类型中的第一个值序号为0,第二个值序号为1,依次类推。

??下面的例子展示了枚举类型的使用:

public class EnumDemo {
    enum Day {
        SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
    }
    public static void main(String[] args) {
        Day day1 = Day.FRIDAY;
        Day day2 = Day.THURSDAY;

        System.out.println("The name of day1 is" + day1.name());
        System.out.println("The name of day2 is" + day2.name());
        System.out.println("The ordinal of day1 is" + day1.ordinal());
        System.out.println("The ordinal of day2 is" + day2.ordinal());
    }
}

??这个程序的输出如下:

The name of day1 is FRIDAY
The name of day2 is THURSDAY
The ordinal of day1 is 5
The ordinal of day2 is 4

??由于枚举类型是Object类的子类和Comparable接口的实现类,因此可以对枚举对象调用Object类的方法,例如equals,toString等,也可以调用Comparable接口的compareTo方法。

??在switch-case语句中使用枚举类型时,case标签可以是省略枚举类型的枚举值,例如:

switch (day) {
    case SUNDAY:
        // process SUNDAY
    case MONDAY:
        // process MONDAY
    ...
}

??可以定义具有数据域、构造器和方法的枚举类型:

public enum Day {
    SUNDAY("星期天"), MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"),
    THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六");

    public String description;

    private Day(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }
}

??需要注意的是,当枚举类型中除了枚举值的声明外还有其他部分时,枚举值的声明必须是第一条语句,且结尾处需要使用分号。此外,由于枚举值的数量是在编译期就确定的,因此不建议创建新的枚举值,所以Java语法要求枚举类型的构造方法是私有的以避免被直接调用。private修饰符可省略,这种情况下,构造方法也会被默认为私有的。

原文地址:https://www.cnblogs.com/maconn/p/10163287.html

时间: 2024-11-01 16:48:47

Java基础教程(15)--枚举类型的相关文章

Java基础教程:枚举类型

Java基础教程:枚举类型 枚举类型 枚举是将一具有类似特性的值归纳在一起的方法.比如,我们可以将周一到周日设计为一个枚举类型.彩虹的七种颜色设计为一个枚举类型. 常量实现枚举 我们通过定义常量的方式来实现,如下: Public static class RainbowColor { // 红橙黄绿青蓝紫七种颜色的常量定义 public static final int RED = 0; public static final int ORANGE = 1; public static fina

I学霸官方免费教程二十五:Java基础教程之枚举 enum

枚举 枚举简单的说就是将需要的常量值一个一个的列举出来,并封装成一个整体.语法格式:[public] enum 枚举名{ //值列表 }声明格式:枚举名 变量名:赋值格式:变量名 = 枚举名.值其中的列举的每个值要符合标识符命名规则,不可随意编写 实例: package enumdemo.simple; /**  * 创建枚举类型的Week 注意:这里创建的是枚举,即数据类型是enum,而不是类  * @author 学霸联盟 - 赵灿  */ public enum Week { // 列举出

Java基础教程:面向对象编程[2]

Java基础教程:面向对象编程[2] 三大特性 封装 封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装.隐藏起来的方法.封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问. 使用封装我们可以对成员变量进行更精确的控制,同时隐藏信息,实现细节等. 方法: public class Person{ private String name; private int age; ? public int getAge(){ return age;

Java基础教程:JDBC编程

Java基础教程:JDBC编程 快速开始 什么是JDBC JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC API 库包含下面提到的每个任务,都是与数据库相关的常用用法. 制作到数据库的连接. 创建 SQL 或 MySQL 语句. 执行 SQL 或 MySQL 查询数据库. 查看和修改所产生的记录. 从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,因此可以用 J

Java基础教程(25)--I/O流

??I/O流表示输入源或输出目标.流可以表示许多不同类型的源和目标,例如磁盘文件.设备.其他程序等. ??流支持许多不同类型的数据,包括字节.原始数据类型.字符和对象等.有些流只传递数据; 有些流则可以操纵和转换数据. ??无论各种流的内部是如何工作的,所有流都提供相同的简单模型:流是一系列数据.程序使用输入流从源头获取数据,一次一项: ??程序使用输出流将数据写入目的地,一次一项: ??在本文中,我们会看到流可以处理各种各样的数据,无论是基本数据还是复杂对象.先来几张IO流的全家福: ??In

Java基础教程 - 组合

1. 什么是组合? 如果一个类的对象和另一个类满足"has-a"关系的话,我们就可以在一个类中,把另一个类的对象作为其对象成员. 什么是"has-a"关系,举个例子:现在有一个类LapTop.class,还有一个是Moniter.class.好显然,Laptop "has-a" Moniter,也就是说,他们是满足"has-a"关系的.这时候,我们就可以把Moniter作为Laptop的一个数据成员. class Laptop

Java基础教程:面向对象编程

Java基础教程:面向对象编程 Java语言概述 Java语言特点 1.Java为纯面向对象的语言,它能够直接反映现实生活中的对象.总之,Everything is object! 2.平台无关性.Java为解释型语言,编译器会把Java代码变成"""中间代码",然后在JVM上解释执行. 3.Java提供了很多内置的类库,这些类库简化了开发人员的程序设计工作,同时缩短了项目开发时间. 4.Java语言提供了对Web应用的支持. 5.Java语言提供了较好的安全性和健

Java基础教程:HashTable与HashMap比较

Java基础教程:HashTable与HashMap比较 1.  关于HashMap的一些说法: a)  HashMap实际上是一个"链表散列"的数据结构,即数组和链表的结合体.HashMap的底层结构是一个数组,数组中的每一项是一条链表. b)  HashMap的实例有俩个参数影响其性能: "初始容量" 和 装填因子. c)  HashMap实现不同步,线程不安全.  HashTable线程安全 d)  HashMap中的key-value都是存储在Entry中的

Java基础教程:多线程基础(2)——线程间的通信

Java基础教程:多线程基础(2)--线程间的通信 使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时还会使程序员对各线程任务在处理的过程中进行有效的把控与监督. 线程间的通信 思维导图 等待中 等待/通知机制 不使用等待/通知机制 我们可以使用使用sleep()与 whle(true) 死循环来实现多个线程间的通信. 虽然两个线程实现了通信,但是线程B必须不断的通过while语句轮训机制来检测某一个条件,这样会浪费CPU资源. 如果轮询间隔较小,更浪费时间间隔.如果轮训