java 枚举高级应用_【后端】java基础(5.6)java高级基础之枚举
java中除了类和接口,还有一个类型叫做枚举(enum),它出现得比较晚,在JDk1.5之后才出,因此对我们来说并不常用,但是它的作用还是不小。
创建的时候前面和创建类、接口一样,在new之后,我们选择enum即可。表面上枚举和类,接口的区别是它是用enum修饰的,在图标上是个黄色的E。
至于内部上的区别,我个人认为枚举主要是将基本类型和值的限制进行了一个封装。枚举,根据字面的意思就是一一举例,那么我觉得就是可以封装进去一些已知所有结果的值。我们可以将它用作常量的封装。
首先我们来定义一个枚举,将周一到周日封装进去:
public enum Week {
MON,TUE,WED,THU,FRI,SAT,SUN
}
如果我们要使用它的,直接调用即可,比如说我想调用星期一:
public class Test {
public static void main(String[] args) {
Week week = Week.MON;
System.out.println(week);
}
}
然后,我们还可以直接用在switch里面:
public static void main(String[] args) {
Week week = Week.MON;
switch (week) {
case MON:
break;
case TUE:
break;
case WED:
break;
case THU:
break;
case FRI:
break;
case SAT:
break;
case SUN:
break;
default:
break;
}
}
当然我们也可以用for each遍历枚举:
public static void main(String[] args) {
Week week = Week.MON;
for (Week w : week.values()) {
System.out.println(w);
}
}
讲了这么多,有童鞋可能会问了,那我直接在外面写七个String类型的变量就可以了,干嘛非要用什么枚举,还这么麻烦?
我们的java代码提倡 高内聚,低耦合的设计理念,通俗来讲,就是一段代码,能封装就封装,能复用就复用,尽量不要让同样的一段逻辑在程序中出现多次。比如这个星期,我们可能在这个类里面要用到,也可能要在别的类里面用到,那么我们只需要写一个枚举,这样在别的类用的时候也是如此调用就好了。这样做的好处是,如果哪一天,我们要改什么需求,只需要在枚举里面改一下就好了,如果程序没有符合这个理念,不仅改起来非常麻烦,还容易出错。
接下来讲讲稍微高级点的玩法:
public enum Week {
MON("星期一"),TUE("星期二"),WED("星期三"),THU("星期四"),FRI("星期五"),SAT("星期六"),SUN("星期日");
private String week;
private Week(String week){
this.week = week;
}
public String getWeek() {
return week;
}
}
public class Test {
public static void main(String[] args) {
Week week = Week.MON;
for (Week w : week.values()) {
System.out.println(w.getWeek());
}
}
}
如果我们加入有参构造函数还有getter方法,加入一个值起名叫做week,便可以获取这个值里面的实际内容,运行,再运行结果就是:
除了加一个,我们还可以加多个,比如给每个星期的值加上一个下标:
public enum Week {
MON("星期一",0),TUE("星期二",1),WED("星期三",2),THU("星期四",3),FRI("星期五",4),SAT("星期六",5),SUN("星期日",6);
private String week;
private int index;
private Week(String week, int index){
this.week = week;
this.index = index;
}
public String getWeek() {
return week;
}
public int getIndex(){
return index;
}
}
当然,我们也可以加入setter方法,这个函数可以用来修改枚举里面的内容,比如我们用getter方法拿到index为0的参数,我们把再用setter方法讲将此参数内的weeb值修改,这个有兴趣的话可以自己试验一下。 枚举还有更多用法,比如可以继承类还有实现接口,有兴趣可以自己查查,在这不做重点。
java 枚举高级应用_【后端】java基础(5.6)java高级基础之枚举相关推荐
- java泛型 简书_一文带你认识Java泛型基础
Java泛型基础 1. 认识泛型 泛型是在JDK1.5之后增加的新功能. 泛型可以解决数据的安全性问题, 主要的原理是在类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型. ...
- java枚举 取值_秒懂系列,超详细Java枚举教程!!!
深入理解Java枚举 一.什么是枚举 1.1 什么是枚举? 至于枚举,我们先拿生活中的枚举来入手,然后再引申Java中的枚举,其实它们的意义很相似. 谈到生活中的枚举,假如我们在玩掷骰子的游戏,在我们 ...
- java程序设计实用教程_清华大学出版社-图书详情-《Java程序设计实用教程》
技术具有卓越的通用性.高效性.平台移植性和安全性,经过20多年的发展,目前已广泛应用于PC.数据中心.游戏控制台.超级计算机.移动电话和互联网,同时拥有全球最大的开发者专业社群.在全球云计算和移动互联 ...
- java语言程序设计你_清华大学出版社-图书详情-《Java语言程序设计》
前言 Java语言是一种典型的面向对象的.跨平台的.支持分布式和多线程的优秀编程语言,具有极强的扩展性.自其诞生以来,迅速被业界认可并广泛应用于Web应用程序的开发中.在此形势下,国内高校在计算机及相 ...
- java编程最新图书_清华大学出版社-图书详情-《Java程序设计》
前言 Java是一种完全面向对象的程序设计语言,具有卓越的通用性.高效性.平台移植性和安全性,得到广泛的应用.在全球云计算和移动互联网产业高速发展的环境下,Java具备显著的优势和广阔前景.本书以Ja ...
- java 获取ip地址_老杜带你学Java【第二课】
上期链接:老杜带你学Java[第一课] 01 写在前面 欢迎来到杜老师的「零基础学Java」课堂~今后,我们就是Java软件工程师了.(此处应该有掌声???)本专题为<零基础学Java>专 ...
- java数据库的量级_程序员学Python还是Java?分析了8张图后得出这个结论
Java和Python两门语言都是目前非常热门的语言,可谓北乔峰南慕容,二者不分上下,棋逢对手.但是对于初学者来说,非常困惑,因为时间和精力有限,上手必须要先学一门,到底选那个好呢,今天3分钟带你透彻 ...
- java程序设计清华大学出版社_清华大学出版社-图书详情-《Java程序设计基础》...
出 版 说 明 我国高等学校计算机教育近年来迅猛发展,应用所学计算机知识解决实际问题,已经成为当代大学生的必备能力. 时代的进步与社会的发展对高等学校计算机教育的质量提出了更高.更新的要求.现在,很多 ...
- 中秋节图案 用java代码打出来_这个中秋,我用 Java 画了一个月饼!
栈长代表微信公众号 "Java技术栈" 祝所有粉丝中秋佳节快乐! 为了用一种特殊的方式表达我的心意,去年中秋节,我写了这篇文章: 没错,去年一天,我学了 20 种编程语言,刺激.. ...
- java生成pdf图表_开发员指南:使用Java图表转换为PDF/JPG等图像
Aspose.Cells for JavaExcel电子表格处理API,它允许Java开发人员在自己的Java应用程序中嵌入可读取.写入和操作Excel电子表格的能力,而无需依赖Microsoft E ...
最新文章
- Foxmail邮件如何导入Outlook中
- (转)Lucene.NET 使用
- NLP-基础知识-003(词性标注)
- pycharm和vs code的使用体验
- c#中在工作线程创建窗体并操作
- 在Finder标题栏上显示完整路径
- ASP 無組件上傳類
- (原创)sqlite封装库SmartDB1.3发布
- 超详细中文车牌识别开源库EasyPR入门实战(win10_VS2019_opencv34)
- 金融+大数据解决方案:银行业
- HTML5-fishc 学习笔记
- 百度地图api中文乱码
- WIN10教育版怎么可以变更为专业版
- wps转PDFmathtype公式错位乱码
- MySQL 数据库单表查询——高级查询
- Linux pv显示进度条命令
- 180余件河北武强年画珍品亮相新疆昌吉回族自治州博物馆
- 一般博士毕业能进什么样的高校当老师?网友:看第一学历!
- 深度长文:智能手机的社会学研究
- win8文件操作以及音视频的应用
热门文章
- 1.6.3 Uploading Data with Solr Cell using Apache Tika
- R6034--ARCENGINE
- Windows 8 系列 --Block Game --随笔
- EF学习杂记39:如何重置Relationships
- 周鸿祎告诫员工:勿盲目把360看成巨头 不四处出击!
- Web API 之SelfHost与OwinSelfHots加载外部程序
- hibernate+mysql保存中文数据乱码问题
- Ipython中如何输入汉字
- [转] Boost智能指针——scoped_ptr
- windows下磁盘IO性能数据评测