一、枚举类型介绍

在Java中,被 enum 关键字修饰的类型就是枚举类型,enum 的全称为 enumeration,它是 JDK 1.5 中引入的新特性。所有的枚举类型都是继承自Enum 类型。枚举是一组常量的集合,枚举属于一种特殊的类,里面只包含一组有限的特定的对象。

二、枚举类型使用案例

对于一周7天,一年4季,一天24小时都是有固定的一个对象,下面对案例进行代码实现:

public class EnumExercise {public static void main(String[] args) {Weeks MONDAY = new Weeks("周一");Weeks TUESDAY = new Weeks("周二");Weeks WEDNESDAY = new Weeks("周三");Weeks THURSDAY = new Weeks("周四");Weeks FRIDAY = new Weeks("周五");Weeks SATURDAY = new Weeks("周六");Weeks SUNDAY = new Weeks("周日");}}
}class Weeks{//类private String name;private String desc;//描述public Weeks(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

单例类是一个类只有一个实例,那么多例类就是一个类有多个实例,但不是无限个数的实例,以上编写方式虽然创建了多个实例,但是并没有限制实例个数,从而不能体现一周是固定的七个对象,进而有枚举类型产生

三、枚举类型实现方式

1)自定义类实现枚举

  • 将构造器私有化
  • 在该类内部直接创建固定的对象
  • 再加一个final修饰符
  • 去掉set方法,防止属性被修改

代码实现:


public class EnumExercise {public static void main(String[] args) {//在此处调用Weeks的静态属性,只能访问到固定的属性,无法进行修改与添加System.out.println(Weeks.MONDAY);System.out.println(Weeks.TUESDAY);}}
}class Weeks{//类private String name;public static final Weeks MONDAY = new Weeks("周一");public static final Weeks TUESDAY = new Weeks("周二");public static final Weeks WEDNESDAY = new Weeks("周三");public static final  Weeks THURSDAY = new Weeks("周四");public static final Weeks FRIDAY = new Weeks("周五");public static final Weeks SATURDAY = new Weeks("周六");public static final Weeks SUNDAY = new Weeks("周日");public Weeks(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

2) 使用 enum 关键字实现枚举

  • 使用关键字enum
  • SPRING("春天", "温暖")   常量名(实参列表)
  • 有多个常量(对象), 使用 ,号间隔即可
  • 使用 enum 来实现枚举,要求将定义常量对象,写在前面
  • 使用无参构造器时,创建常量对象,则可以省略 ()

代码实现:

public class EnumExercise {public static void main(String[] args) {System.out.println(Week.MONDAY);System.out.println(Week.TUESDAY);}
}enum Week{MONDAY("周一"),TUESDAY("周二"),WEDNESDAY("周三"),THURSDAY("周四"),FRIDAY("周五"),SATURDAY("周六"),SUNDAY("周日");private String name;Week(){}Week(String name) {this.name = name;}@Overridepublic String toString() {return name;}
}
  1. 当使用 enum 关键字开发一个枚举类时,默认会继承 Enum 类, 而且是一个 final 类
  2. 要清楚知道枚举对象调用的是哪个构造器.
  3. 如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略
  4. 当有多个枚举对象时,使用,间隔,最后有一个分号结尾
  5. 枚举对象必须放在枚举类的行首

四、enum 常用方法

1) toString:Enum 类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息

未重写前输出对象名,也就是SATURDAY:

重写后输出属性的信息也就是周六:

2) name:返回当前对象名(常量名),子类中不能重写

3) ordinal:返回当前对象的位置号,默认从 0 开始

4) values:返回当前枚举类中所有的常量

5) valueOf:将字符串转换成枚举对象,要求字符串必须 为已有的常量名,否则报异常

根据你输入的 字符串 到 Week 的枚举对象去查找 , 如果找到了,就返回,如果没有找到,就报错

6) compareTo:比较两个枚举常量,比较的就是编号!

实质就是:Week.MONDAY的编号[1] - Week.SUNDAY的编号[7],所以输出-6

【JAVA枚举类型】相关推荐

  1. 【转】掌握java枚举类型(enum type)

    原文网址:http://iaiai.iteye.com/blog/1843553 1   背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用 ...

  2. java的枚举类型是什么_什么是枚举(java枚举类型enum用法)

    最佳回答 枚举 1.枚举 (enumeration) 值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称.枚举类型有名称.基础类型和一组字段.基础类型. &qu ...

  3. Java 枚举类型的应用

    实验十一 Java 枚举类型的应用 一.实验目的 1 .掌握枚举的定义方式. 2 .掌握 enum 关键字与 Enum 类的关系. 二.实验学时 2 学时 三.实验类型 验证性实验 四.实验需求 1 ...

  4. java枚举类型enum用法和写法

    java枚举类型enum用法,enum的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 Java.lang 包中,在上面的这种情况下,enum就能派上用场了.枚举类型的用 ...

  5. java 枚举类型enum的用法详解

    Java Enum原理 public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE }; 实际上,这个声明定义的类型是一个类,它刚好有四个实例,在此尽量不要 ...

  6. java 枚举类型初始化_java 枚举类型分析

    最近做android开发,需要用到枚举值,这样可以连续赋值,我按之前c++那样书写,如下所示: public enumColorSelect { RED_BAGE= 0, GREEN_BAGE, BL ...

  7. java 枚举类 int_【转】掌握java枚举类型(enum type)

    原文网址:http://iaiai.iteye.com/blog/1843553 1   背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用 ...

  8. java枚举类型有什么用_[转载] Java中枚举类型的使用 - enum

    本文转载自博客 - Java枚举类型, 博主对原文内容及结构作了一定的修改. 1 枚举类的编译特性 从JDK 5开始, Java中多了一个关键字 -- enum: 可以将一组具有名称的值(包括Stri ...

  9. java枚举类型enum用法_java枚举类型enum用法和原理介绍【传智播客】

    Enum枚举类型 Enum的全写是Enumeration,这个词的翻译是列举.逐条陈述.细目.在程序语言中,枚举类型是一种特殊的数据类型(常用的数据类型比如字符串.整型),这种数据类型的变量值限定在固 ...

  10. 理解Java枚举类型

    (参考资料:深入理解java enum) 1.原理:对编译后的class文件javap反编译可以看出,定义的枚举类继承自java.lang.Enum抽象类且通过public static final定 ...

最新文章

  1. 串口ISPHUB制作
  2. CodeForces 392C Yet Another Number Sequence 矩阵快速幂
  3. pycharm和vs code的使用体验
  4. 程序员的弓箭知识涉猎
  5. 如何防止单例模式被JAVA反射攻击
  6. Linux之RPM 软件管理程序
  7. 针对提高48V 配电性能的诸多思考!
  8. java-集合(三)
  9. 求数组子序列和最大值
  10. javascript常用正则
  11. java技术总监一般问什么_技术总监面试题(Java),看看你会多少?
  12. u890安装显示iis服务器,XP纯净版系统下安装用友U8提示iis不符合怎么办
  13. 什么是SysWow64
  14. 大卫艾克~雄狮醒来2:实相的本质(中字)
  15. 途家、木鸟、美团……民宿暑期战事将起
  16. MySQL 8.0 安装教程
  17. 清理localstorage_localstorage文件夹可以删除吗
  18. 1 深度学习为甚么如此火热发展如此迅速
  19. 《张维迎:反思经济学》读后感作文4300字
  20. 浏览器访问linux服务器上tomcat中的pdf文件时报404,无法访问的问题

热门文章

  1. 帝国ECMS教程:上一篇下一篇自定义综合代码
  2. OC5228 100V多功能LED恒流驱动器-高辉调光 65536:1 调光比
  3. y40.第三章 Kubernetes从入门到精通 -- k8s 资源对象(十三)
  4. matlab里颜色直方图的画法
  5. 哪位有利用matlab中的s函数编写的光伏系统mppt仿真程序,Simulink的MPPT的S函数程序...
  6. java桌面端开发为什么没就行起来,大部分人选qt,winform,electron?
  7. Neo4j 简单入门
  8. Docker-容器化应用
  9. Mendix一练一动: Mendix Studio Pro连接外围数据库(SQL Server)实现增删改查
  10. 【数值优化之凸集与凸函数】