温馨提示:如果想学扎实,一定要从头开始看凯哥的一系列文章(凯哥带你从零学大数据系列),千万不要从中间的某个部分开始看,知识前后是有很大关联,否则学习效果会打折扣.

系列文章第一篇是拥抱大数据:凯哥带你从零学大数据系列-学习大数据前奏(必读)(点我)!

上一篇:拥抱大数据:凯哥带你从零学大数据系列之Java篇---第十章:包装类和常用类

课程重点:

  • 枚举的基本定义
  • 枚举的基本使用

11.1. 枚举的简介

11.1.1. 枚举的概念

枚举也是一种自定义的数据类型, 是一个引用数据类型。 枚举经常用来被描述一些取值范围有限的数据。

例如:

  • 性别: 只有两个值, 此时可以用枚举来表示
  • 月份: 只有12个值, 此时可以用枚举来表示
  • 星期: 只有七个值, 此时可以用枚举来表示

11.2. 枚举的基本定义和使用

11.2.1. 枚举的定义

定义枚举类型, 需要使用到关键字 enum 。 枚举的名字是一个标识符, 遵循大驼峰命名法。

/*** @Description   枚举的定义*/
public enum Gender {// 将这个枚举对象所有可能取到的值, 都列出来// 枚举中的元素, 也是标识符, 遵循大驼峰命名法Male, Female
}
public enum Month {Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
}
public enum Week {Mon, Tue, Wed, Thu, Fri, Sat, Sun
}

11.2.2. 枚举的使用

枚举是一种自定义的数据类型, 可以声明变量。 在使用的时候, 直接使用枚举类型.枚举值这样的形式进行枚举值的获取。

/*** @Description   枚举的使用*/
public class Test {public static void main(String[] args) {// 枚举的使用Gender gender1 = Gender.Male;Gender gender2 = Gender.Female;Month m1 = Month.Jan;Month m2 = Month.Nov;Week week1 = Week.Sat;}
}

11.3. 枚举中的成员定义

11.3.1. 枚举的分析

枚举,其实可以认为是Object类的一个最终子类。 不能被其他的类、枚举继承。

/*** @Description  枚举的使用*/
public class EnumTest {public static void main(String[] args) {// 1. 获取一个枚举对象Gender gender = Gender.Male;// 1.1. 证明方式1: 枚举对象,可以调用Object类中的方法,说明这些方法是从Object类中继承到的。String str = gender.toString();// 1.2. 证明方式2: 可以向上转型为 Object 类型。Object obj = gender;}
}
enum Gender {Male, Female
}

11.3.2. 枚举中的属性定义

/*** @Description    枚举的属性定义*/
public enum Gender {Male, Female;// 1. 在枚举中定义属性、方法、构造方法... 是需要写在枚举元素的下方!//    如果需要在枚举中定义成员,需要在最后一个枚举元素后面添加一个分号。public String desc;
}

11.3.3. 枚举中的构造方法定义

/*** @Description   枚举的构造方法定义*/
public class Test2 {// 为了防止和当前包中的Gender枚举重复,在这里写成了静态内部枚举private static enum Gender {// 其实,所谓枚举中的元素,其实就是一个静态的、当前类的对象。Male("男"), Female("女");// 添加属性private String desc;// 添加构造方法,为这个属性赋值// 在枚举中定义构造方法,一般情况下,只是在当前的枚举中使用// 所以,枚举的构造方法,一般情况下,权限都是私有的Gender(String desc) {this.desc = desc;}}public static void main(String[] args) {// 1. 枚举对象的获取Gender gender = Gender.Male;}
}

11.3.4. 枚举中的方法定义

/*** @Description   枚举的方法定义*/
public enum Gender {Male, Female;// 1. 在枚举中定义属性、方法、构造方法... 是需要写在枚举元素的下方!//    如果需要在枚举中定义成员,需要在最后一个枚举元素后面添加一个分号。public String desc;// 2. 定义方法public void show() {System.out.println("枚举中的方法定义");}public static void display() {System.out.println("枚举中的静态方法的定义");}
}

11.3.5. 枚举中的方法重写

/*** @Description   方法重写*/
private static enum Gender {// 其实,所谓枚举中的元素,其实就是一个静态的、当前类的对象。Male("男"), Female("女");// 添加属性private String desc;// 添加构造方法,为这个属性赋值// 在枚举中定义构造方法,一般情况下,只是在当前的枚举中使用// 所以,枚举的构造方法,一般情况下,权限都是私有的Gender(String desc) {this.desc = desc;}@Overridepublic String toString() {return this.desc;}}

11.3.6. 枚举实现接口

/*** @Description   接口实现*/
enum Gender implements MyInterface {@Overridepublic void test() {System.out.println("接口中的方法");}
}interface MyInterface {void test();
}

11.3.7. 枚举值

/*** @Description   枚举值*/
enum Gender implements MyInterface {// 其实,所谓枚举中的元素,其实就是一个静态的、当前类的对象。Male("男") {// 这里,其实就相当于是一个匿名内部类// 在这里,可以重写Gender中的方法@Overridepublic void test() {System.out.println("Male的重写实现");}},Female("女");// 添加属性private String desc;// 添加构造方法,为这个属性赋值// 在枚举中定义构造方法,一般情况下,只是在当前的枚举中使用// 所以,枚举的构造方法,一般情况下,权限都是私有的Gender(String desc) {this.desc = desc;}@Overridepublic String toString() {return this.desc;}@Overridepublic void test() {System.out.println("接口中的方法");}
}

看完啦,你需要接着看

拥抱大数据:凯哥带你从零学大数据系列之Java篇---第十二章:异常​zhuanlan.zhihu.com

继续加油吧!

ios 获取一个枚举的所有值_凯哥带你从零学大数据系列之Java篇---第十一章:枚举...相关推荐

  1. map根据value值排序_凯哥带你从零学大数据系列之Java篇---第十九章:集合(Map+Collections)...

    温馨提示:如果想学扎实,一定要从头开始看凯哥的一系列文章(凯哥带你从零学大数据系列),千万不要从中间的某个部分开始看,知识前后是有很大关联,否则学习效果会打折扣. 系列文章第一篇是拥抱大数据:凯哥带你 ...

  2. java lambda表达式_凯哥带你从零学大数据系列之Java篇---第二十二章:Lambda表达式...

    温馨提示:如果想学扎实,一定要从头开始看凯哥的一系列文章(凯哥带你从零学大数据系列),千万不要从中间的某个部分开始看,知识前后是有很大关联,否则学习效果会打折扣. 系列文章第一篇是拥抱大数据:凯哥带你 ...

  3. jdbc代码_凯哥带你从零学大数据系列之数据库篇---第三章:JDBC基础

    温馨提示:如果想学扎实,一定要从头开始看凯哥的一系列文章(凯哥带你从零学大数据系列),千万不要从中间的某个部分开始看,知识前后是有很大关联,否则学习效果会打折扣. 系列文章第一篇是拥抱大数据:凯哥带你 ...

  4. 多层数组如何遍历_带你从零学大数据系列之Java篇---第五章:数组

    温馨提示:如果想学扎实,一定要从头开始看凯哥的一系列文章(凯哥带你从零学大数据系列),千万不要从中间的某个部分开始看,知识前后是有很大关联,否则学习效果会打折扣. 系列文章第一篇是拥抱大数据:凯哥带你 ...

  5. 大数据全样而非抽样原理_一文带你了解什么是大数据

    科技是第一生产力.进入世纪的第一个20年以来,人们越来越多地将关注的领域集中在大数据.人工智能.云计算.物联网.移动互联网.GIS.AR与VR.5G.区块链.数字化与智慧化等,尤其为最近的风口&quo ...

  6. C#中如何获取一个字体的宽度值(像素单位)-获得文字的像素宽度

    C#中如何获取一个字体的宽度值(像素单位) 应用:减去了一个空格的长, 字符间距还是有点差距 private void listBox1_DrawItem(object sender, DrawIte ...

  7. sparkstreaming监听hdfs目录_大数据系列之Spark Streaming接入Kafka数据

    Spark Streaming官方提供Receiver-based和Direct Approach两种方法接入Kafka数据,本文简单介绍两种方式的pyspark实现. 1.Spark Streami ...

  8. 外部jar包_大数据系列之PySpark读写外部数据库

    本文以MySQL和HBASE为例,简要介绍Spark通过PyMySQL和HadoopAPI算子对外部数据库的读写操作 1.PySpark读写MySQL MySQL环境准备参考"数据库系列之M ...

  9. Effective Java笔记第五章枚举和注解第三节用EnumSet代替位域

    Effective Java笔记第五章枚举和注解 第三节用EnumSet代替位域 在以前如果一个枚举类型的元素主要用在集合中,一般就会使用int枚举模式.比如说: public class Demo ...

最新文章

  1. 上线随想之2011-03-25
  2. WinForms多线程编程之多线程计算器
  3. yolo-v2 v3实现笔记 mAP:mean average precision 平均精度均值
  4. html怎么设置z值,css z-index属性怎么用
  5. HDU - 2089 不要62 【暴力打表】【数位DP】
  6. Mysql中的in和find_in_set的区别?
  7. 即插即用+任意blur的超分辨率重建——DPSR
  8. Spring集成Memcached三种方式(一)
  9. Ubuntu16.04+cuda10.0+cudnn7.6配置tensorflow1.x环境
  10. 值得玩味儿的14个Python编程小技巧
  11. js+JQuery实现返回顶部功能
  12. android 三方_面试官送你一份Android热门三方库源码面试宝典及学习笔记
  13. PHP Mysql:时间函数
  14. 通过串口连接控制树莓派
  15. scintilla 中的代码折叠功能的使用
  16. 线性代数学习笔记——第四十讲——n维向量空间的概念
  17. 亳州市消防支队乡镇(街道)消防工作站综合管理平台案例
  18. 将Openfire中的MUC改造成类似QQ群一样的永久群
  19. 模拟鼠标移动程序实现——解决域控制器策略强制电脑锁屏问题
  20. 验证码(正则表达式)

热门文章

  1. 抓取html的内容,js获取网页选中内容(包含html代码)
  2. 基于matlab的卷积码实验报告,基于MATLAB的卷积码编译码设计仿真.doc
  3. python决策树怎么选择_机器学习|决策树分类与python实现
  4. python代码颜色不同_Python填充任意颜色,不同算法时间差异分析说明
  5. 浅谈Java解决鸡兔同笼问题的思路
  6. java 动态拼接sql_动态SQL拼接工具类
  7. linux进程调度周期,Linux进程组调度机制学习
  8. mysql手注_php+mysql手注拿shell教程【朋友给的】
  9. 二十七、 爬取Boss直聘的招聘信息
  10. ACM MM 2021 | 面向多模态情绪识别的双流异质图递归神经网络