Java基础教程——枚举类型
枚举类型
枚举类型在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基础教程——枚举类型的更多相关文章
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- Java基础之枚举类型Enum的使用
Java基础之枚举类型Enum的使用 定义 public enum AccruedCleanEnum { SPREAD("1","发票"),OTHER(&quo ...
- Java基础_枚举类型
作用:让数据更简洁,更易读,增加代码可读性. 为了用1,2,3,4,5分别表示老师,学生,小组,班主任,后勤,可以直接设置一个变量,让roleType = 1,但这样写代码可读性差. 也可以定义一个成 ...
- java基础(十一) 枚举类型
枚举类型Enum的简介 1.什么是枚举类型 枚举类型: 就是由一组具有名的值的有限集合组成新的类型.(即新的类). 好像还是不懂,别急,咱们先来看一下 为什么要引入枚举类型 在没有引入枚举类型前,当我 ...
- Java基础之枚举类型
枚举 为什么需要枚举 在Java开发过程中,有时需要定义一系列有限的数据,如:月份.星期等.<br> java1.5之前,主要通过定义一系列静态常量完成. class Genders{ p ...
- Java基础教程:枚举类型
Java基础教程:枚举类型 枚举类型 枚举是将一具有类似特性的值归纳在一起的方法.比如,我们可以将周一到周日设计为一个枚举类型.彩虹的七种颜色设计为一个枚举类型. 常量实现枚举 我们通过定义常量的方式 ...
- Java基础教程(15)--枚举类型
枚举类型定义了一个枚举值的列表,每个值是一个标识符.例如,下面的语句声明了一个枚举类型,用来表示星期的可能情况: public enum Day { SUNDAY, MONDAY, TUESDAY ...
- Java基础教程:注解
Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...
- Java基础教程:面向对象编程[3]
Java基础教程:面向对象编程[3] 内容大纲 基础编程 获取用户输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入.我们可以查看Ja ...
随机推荐
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之四(五十三)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- mysql presto 函数收集
格式化日期 presto: select date_format(CURRENT_DATE - INTERVAL '1' month, '%Y-%m') mysql:date_format(DATE ...
- 关于windows下redis的安装
1.下载地址:https://github.com/MSOpenTech/redis/releases 2.DOS下进redis文件夹目录,执行redis-server.exe redis.windo ...
- monkey及其的日志管理和分析
1. monkey 1.1. 介绍 通过monkey程序模拟用户触摸屏幕,滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常,检查和评估被测程序的稳定性 ...
- 错误解析:org.apache.catalina.LifecycleException: Protocol handler start failed
以下是报错代码: org.apache.catalina.LifecycleException: Protocol handler start failed at org.apache.catalin ...
- C++ storage allocation + Dynamic memory allocation + setting limits + initializer list (1)
1. 对象的空间在括号开始就已经分配,但是构造在定义对象的时候才会实现,若跳过(譬如goto),到括号结束析构会发生错误,编译会通不过. 2.初始化 1 struct X { int i ; floa ...
- DP斜率优化学习笔记
斜率优化 首先,可以进行斜率优化的DP方程式一般式为$dp[i]=\max_{j=1}^{i-1}/\min_{j=1}^{i-1}\{a(i)*x(j)+b(i)*y(j)\}$ 其中$a(j)$和 ...
- 推动中国制造升级,汽车装配车间生产流水线3D可视化
前言 随着<中国制造2025>的提出,制造业迎来了全新的发展机遇.更多的企业将制造业信息化技术进行广泛的应用,如 MES 系统.数字孪生以及生产管理可视化等技术的研究应用,已经成为社会各界 ...
- C++ 基础 2:C++ 对 C 语言的拓展
1 引用 1.1 定义及编程实践 引用,是某个已存在变量的另一个名字. 一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. 注意: 引用没有定义,是一种关系型声明.声明它和原有某一 ...
- Spider_基础总结2_Request+Beautifulsoup解析HTML
静态网页 抓取实例: import requests from bs4 import BeautifulSoup def gettop250(): headers={ 'user-agent':'Mo ...