Java学习笔记之Enum枚举(1)
Java学习笔记之Enum枚举(1)
- 前言
- 最基本的用法
- 了解Java中的Enum
- 后记
- 链接
前言
这是在学习Java过程中对自己遇到并得以解决的问题的一些记录,一方面是记录下来方便自己以后查询,一方面希望能帮到有同样疑惑的初学者!本文章参考了博主山高人为峰的文章和java官方文档(我使用的JavaSE8)并结合了自己的心路历程。
最基本的用法
在认识到Enum同样是一个标准Java类之前我们可以把枚举当成是一个和C语言中枚举一样的数据类型,只需要加上Java中的标识符private即可。举例:
import java.util.*
//enum声明与使用范例1
//声明
public enum Size
{//这里的分号可以省略不写,也可以加上SMALL,MEDIUM.LARGE
}//使用已经定义的枚举创建一个新域
Size size_1 = Size.SAMLL;
Size size_2 = Size.LARGE;
//判断两个域是否相等
if(size_1 == size_2){ }
//打印到控制台,会输出字符串“STRING"
System.out.println(size_1);
到目前为止这跟C中的枚举没有任何区别。
了解Java中的Enum
首先查阅javadoc发现Enum 的声明为:
public abstract class Enum<E extends Enum<E>>;
也就是说首先Enum是一个标准类,它被标记为abstract 这意味着任何Enum不能实例化。也意味着我们自己声明的时候的语法等效于:
public final class Size extends java.lang.Enum;
但是当我继续看Core Java时候发现后面出现了一个很有意思的代码片
public enum Size
{//后面还有别的域和方法时候必须带分号,且实例声明必须放在最前SMALL("S"),MEDIUM("M").LARGE("L");private String abbreviation;private Level(String abbreviation){ this.abbreviation = abbreviation; }public String getAbbreviation(){return abbreviation;}
}
这段代码着实让我感到非常迷惑,我既不知道为什么SMALL后面还能打个括号带个字符串,也不知道后面定义的private域abbreviation和私有构造器有什么用。但是当我写出下列测试代码:
Size size = Size.SMALL;
System.out.println(size.getAbbreviation());
发现控制台输出了S,这就有意思了,这说明构造器的abbreviation跟SMALL后面括号里的内容是一样的,而且当我准备把构造器的修饰符修改为public时IDE报错,这时候我有点明白了前面的SMALL、MEDIUM、LARGE在java语法中是省略了写法的静态实例!在参考了Java文档和一些讲解之后我发现这里的SMALL应该是:
//这个语句实际上是通不过编译的,因为枚举不能被实例化,这只是用于说明发生了什么
public static final Size SMALL = new Size("S");
当你声明如下域时
Size size = Size.SMALL;
实际上是在把enum类中静态域的引用给了size,这也解释了为什么上面判断两个枚举是否相等时使用 == 运算符,因为只需要判断是否是同一个引用。那么很自然的我们还可以添加更多域和方法:
public enum Size
{//后面还有别的域和方法时候必须带分号,且实例声明必须放在最前SMALL("S",1),MEDIUM("M",2).LARGE("L",3);private String abbreviation;private int index;private Level(String abbreviation,int index){this.abbreviation = abbreviation;this.index = index;}public String getAbbreviation(){return abbreviation;}public int getIndex(){return index;}
}
在有了自定义域之后我们可以重写toString() 语法来提供关于这个枚举的更多信息:
@override
public String toString()
{return String.format("name:%s,index:%d",getAbbreviation(),getIndex());
}
同时Enum类提供了一个**valueOf()**方法用于初始化枚举,用法如下:
//第一个参数是你自己定义的枚举的class,第二个参数是对应的域的名称
Size size = Enum.valueOf(Size.class,"SMALL");
//等效于
Size size = Size.SMALL;
后记
第一次在CSDN写博客,文字比较凌乱,算是记录学习的心路历程!希望能对同样有困惑搜索而来的你有所帮助!
链接
1.参考博主山高我为峰文章
2.JavaSE8官方文档下载地址
Java学习笔记之Enum枚举(1)相关推荐
- java学习笔记11--Annotation
java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Java学习笔记(原创)
Java学习笔记(原创) 2011-12-01 16:37:00| 分类: Java|举报|字号 订阅 下载LOFTER客户端 基本知识 一. Java基础 1. java语言的特点: ①简单:没有 ...
- Java学习笔记22:并发(2)
Java学习笔记22:并发(2) 图源:PHP中文网 终止任务 终止线程有一种非常简单的方式:设置一个多线程共享的标记位,子线程用轮询的方式检查这个标记位,如果该标记位显示取消状态,就让子线程退出执行 ...
- java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组
java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 文章目录 java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 一.运算符和表达式 1.数学函数与 ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- 准备写java学习笔记
准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267
- Java学习笔记--StringTokenizer的使用
2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...
- java学习笔记12--异常处理
java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...
最新文章
- AESNI/XData勒索病毒来袭 目前主要在乌克兰传播 它居然还能使用硬件加速加密过程...
- JQUERY学习第二天之制作横纵向导航菜单
- SpringCloud 从菜鸟到大牛之五 统一配置中心 Spring Cloud Config
- python函数执行顺序_python下for循环接if判断的函数执行顺序
- 博图能打开s7200吗_透明胶真的能把车窗打开吗?现场实验给你看,能成功吗?...
- Flutter 进阶篇-所有知识点架构
- 深度学习与计算机视觉教程(15) | 视觉模型可视化与可解释性(CV通关指南·完结)
- 你的选择,决定了你过怎样的生活
- 路由器wan口认证断开服务器无响应,路由器WAN口设置已断开(服务器无响应)的解决方法...
- 语义版本号(Semantic Versioning)
- 54个站在人类智商巅峰的男人!告诉你2400年的物理学史里都有什么……
- react中使用AlipayJSBridge 支付宝支付调用接口在H5网页的应用
- 基于Echarts数据可视化地图模块(地图下钻+地图迁徙线)
- 使用MODIS数据筛选火点
- Umi v4 Ant Desgin Pro v6 prisma zod casbin 企业级后台系统玩透视频教程(14 个视频)
- 李开复:怎样领导聪明人
- 计算机信息系统物理安全防护措施,信息物理系统安全威胁与防护措施
- yzh 第七课 RISCV指令集
- PS 滤镜小结(备用)
- 小白自学笔记——JAVA基础 2.9循环结构