枚举类型

枚举类型在JDK 5时引入。

	enum WeekEnum {
MONDAY, TUESDAY, WEDNESDAY, THURDAY, FRIDAY, SATURDAY, SUNDAY
}

Java的枚举类java.lang.Enum中,有:

|--private final String name;(定义时可表意的标识符)

|--private final int ordinal;(序数,从0开始)

|--及对应的获取方法。

public class Enum1Common {
enum WeekEnum {
MONDAY, TUESDAY, WEDNESDAY, THURDAY, FRIDAY, SATURDAY, SUNDAY
}
public static void main(String[] args) {
System.out.println("枚举类型标识符:" + WeekEnum.FRIDAY);
for (WeekEnum day : WeekEnum.values()) {
System.out.print("直接输出:" + day);// toString()
System.out.print("\t name:" + day.name());
System.out.println("\t ordinal:" + day.ordinal());// 序数
}
}
}

枚举类型标识符:FRIDAY

直接输出:MONDAY name:MONDAY ordinal:0

直接输出:TUESDAY name:TUESDAY ordinal:1

直接输出:WEDNESDAY name:WEDNESDAY ordinal:2

直接输出:THURDAY name:THURDAY ordinal:3

直接输出:FRIDAY name:FRIDAY ordinal:4

直接输出:SATURDAY name:SATURDAY ordinal:5

直接输出:SUNDAY name:SUNDAY ordinal:6

*枚举是“特殊的类”

枚举类型是一种“特殊的类”,

它可以有自己的属性和方法(包括构造方法)。

枚举类的构造器只能使用private访问控制符;

如果省略访问控制符,还是private。

// 枚举类也可以有变量和方法
public class Enum2Member {
public static void main(String[] args) {
System.out.println(GenderEnum.MALE + ":" + GenderEnum.MALE.getLabel());
// Enum.valueOf():获取指定枚举类的枚举值
GenderEnum g = Enum.valueOf(GenderEnum.class, "FEMALE");
System.out.println(g + ":" + g.getLabel());
}
}
enum GenderEnum {
MALE("男"), FEMALE("女");// 必须第一行
// ----------------------------------
// 枚举类的属性值应该使用private final修饰
private final String label;
// 枚举类一旦写带参构造器(必须private),列出枚举值时必须传参
private GenderEnum(String label) {
this.label = label;
}
public String getLabel() {
return this.label;
}
}
MALE:男
FEMALE:女

*枚举类可以实现接口

// 枚举类可以继承接口
public class Enum3Impl {
public static void main(String[] args) {
System.out.println(ImplEnum.PLUS.eval(3, 2));
System.out.println(ImplEnum.MINUS.eval(3, 2));
}
}
interface IOperation {
double eval(double x, double y);
}
enum ImplEnum implements IOperation {
PLUS {
public double eval(double x, double y) {
return x + y;
}
},
MINUS {
public double eval(double x, double y) {
return x - y;
}
}
}
5.0
1.0

*枚举类的抽象方法

枚举类本身可以定义抽象方法,由各枚举值实现。

// 枚举类可以定义“抽象方法”,并由枚举值实现
public class Enum4Abstract {
public static void main(String[] args) {
System.out.println(AbstractEnum.TIMES.eval(3, 2));
System.out.println(AbstractEnum.DIVIDE.eval(3, 2));
}
}
enum AbstractEnum {
TIMES {
public double eval(double x, double y) {
return x * y;
}
},
DIVIDE {
public double eval(double x, double y) {
return x / y;
}
};
// 定义抽象方法(必须在枚举值之后定义)
// 由各枚举值 提供 具体实现
public abstract double eval(double x, double y);
}
6.0
1.5

Java基础教程——枚举类型的更多相关文章

  1. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  2. Java基础之枚举类型Enum的使用

    Java基础之枚举类型Enum的使用 定义 public enum AccruedCleanEnum { SPREAD("1","发票"),OTHER(&quo ...

  3. Java基础_枚举类型

    作用:让数据更简洁,更易读,增加代码可读性. 为了用1,2,3,4,5分别表示老师,学生,小组,班主任,后勤,可以直接设置一个变量,让roleType = 1,但这样写代码可读性差. 也可以定义一个成 ...

  4. java基础(十一) 枚举类型

    枚举类型Enum的简介 1.什么是枚举类型 枚举类型: 就是由一组具有名的值的有限集合组成新的类型.(即新的类). 好像还是不懂,别急,咱们先来看一下 为什么要引入枚举类型 在没有引入枚举类型前,当我 ...

  5. Java基础之枚举类型

    枚举 为什么需要枚举 在Java开发过程中,有时需要定义一系列有限的数据,如:月份.星期等.<br> java1.5之前,主要通过定义一系列静态常量完成. class Genders{ p ...

  6. Java基础教程:枚举类型

    Java基础教程:枚举类型 枚举类型 枚举是将一具有类似特性的值归纳在一起的方法.比如,我们可以将周一到周日设计为一个枚举类型.彩虹的七种颜色设计为一个枚举类型. 常量实现枚举 我们通过定义常量的方式 ...

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

      枚举类型定义了一个枚举值的列表,每个值是一个标识符.例如,下面的语句声明了一个枚举类型,用来表示星期的可能情况: public enum Day { SUNDAY, MONDAY, TUESDAY ...

  8. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

  9. Java基础教程:面向对象编程[3]

    Java基础教程:面向对象编程[3] 内容大纲 基础编程 获取用户输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入.我们可以查看Ja ...

随机推荐

  1. git每次提交代码都要设置账号密码的问题

    git config --global credential.helper store 待下一次提交代码的时候,输入了正确的用户名和密码,之后 就不需要输入用户名密码

  2. 从原生web组件到框架组件源码(一)

    温馨提醒,当你觉得看我写的很乱的时候,就对了,那是因为我查阅了大量的资料提取出来的,因为有点东西不太理解,所以你会感觉有的部分重复了,也不是重复,只是后面对前面的内容进行梳理了一些,需要耐心的看到最后 ...

  3. SQL中WHERE子句中为什么不能使用聚合函数?

    我们先来看一下这个代码: SELECT * FROM product WHERE SUM(slae_price) > 1000 GROUP BY product_type; 这样子会报错: SE ...

  4. CentOS 8.x 下尝试安装.Net 5 的运行时

    1.背景 看着不管是群里还是公众号里这几天最热闹就是.Net 5.0 正式版的发布.C#9. 当然要开发.net 5.0 的项目就需要把VisualStudio升级的v16.8.0版本了.升级后自带着 ...

  5. 这些C++基础知识的基础知识你都学会了吗?

    一.C++基础知识 新的数据类型 C语言中的数据类型  C++中新的数据类型 思考:新的数据类型有什么好处?请看下面的代码:  可以见得:新的类型使整个程序更加简洁,程序变得易读易懂!这个就是bool ...

  6. C语言环境总结

    1.虚拟内存下C语言环境 2.main函数调用 3.栈调用 每次函数调用,在栈中分配一个栈帧,寄存器通过持有该栈帧的基地址,并上下偏移,访问形参和本地变量, C语言形参为一个字大小,所以通常传指针,这 ...

  7. RBD快速删除的方法分析与改进

    前言 这个问题在很久以前就有一篇文章进行过讨论 remove-big-rbd,这个文章写的比较清楚了,并且对不同的方法做了分析,这里先把结论说下 rbd类型 rbd rm 方法 rados -p rm ...

  8. Docker版EKL安装记录文档

    Docker版EKL安装记录文档 拉取已下三个镜像 docker.io/logstash 7.5.2 b6518c95ed2f 6 months ago 805 MB docker.io/kibana ...

  9. 解决Ubuntu配置nginx出现的问题

    Ubuntu18.04配置nginx出现的各种错误 缺少pcre库 编译nginx 出现错误 安装pcre库,出现错误 手动编译安装pcre库 (1)下载并解压pcre库 wget https://f ...

  10. C++ const的自我理解

    C++学习笔记–const const 是 constant 的缩写,本意是不变的,不易改变的意思.在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数. C++ const ...