java 5.0引入的新特性-枚举
概念
首先,枚举并不是一种新技术,而是一种基础数据类型.它隶属于两种基础类型中的值类型,如下:
2. 为什么要有枚举
枚举在真正的开发中是非常常用的,它的作用很简单也很纯粹:它定义了一种规范,就是要让某个类型的变量的取值只能为若干个固定值中的一个,也就是要符合它定义的规范.它可以让编译器在编译时就可以识别程序中填写的非法值,一定程度上防止了运行时的非法类型值错误.
例如:要定义星期几的变量,如果用普通变量1-7 分别表示星期一到星期日,但有人可能写成int weekday=0.这种错误只能到运行时才能发现,编译是没问题的。但如果用枚举代替普通变量,就可将错误在编译时识别。
枚举本身当然是一个类,它的定义与使用与普通类很类似,而每个枚举变量都相当于类的一个对象。下面将分别介绍枚举的基本使用、带有构造方法的枚举、带有抽象方法的枚举。如下:
3. 基本使用
public class EnumTest2 {
public static void main(String[] args) {
WeekDay weekDay2 = WeekDay.FRI;
//使用1:toString()方法
System.out.println(weekDay2);//输出:FRI
//使用2:name()方法
System.out.println(weekDay2.name());//输出:FRI
//使用3:ordinal()方法
System.out.println(weekDay2.ordinal()); //输出:5
//使用4:枚举变量的反射
System.out.println(WeekDay.valueOf("SUN").toString());//输出:SUN
//使用5:获取枚举的长度
System.out.println(WeekDay.values().length);//输出:7
}
/**
* 定义枚举类--这里作为测试类的一个子类
*/
public enum WeekDay{
SUN,MON,TUE,WED,THI,FRI,SAT;
}
}
其它可参考:
http://blog.csdn.net/wang379275614/article/details/39652245#
java 5.0引入的新特性-枚举的更多相关文章
- Java高新技术 JDK1.5之新特性
Java高新技术 JDK1.5的新特性 知识概要: (1)静态导入 (2)可变参数 (3)增强for循环 (4)基本数据类型的自动拆箱和装箱 静态导入 ...
- Java9发布回顾Java 8的十大新特性
java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...
- Spring Boot 2.0正式发布,新特性解读
作者|翟永超 Spring Boot 2.0 来啦,有哪些新特性?升级吗? 写在前面 北京时间 3 月 1 日,经过漫长的等待之后,Spring Boot 2.0 正式发布.作为 Spring 生态中 ...
- Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结
Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.----------- ...
- c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结【转载】
引用:http://blog.csdn.net/attilax/article/details/42014327 c# .net 3.5 4.0 各个版本新特性战略规划总结 1. ---------- ...
- Java学习:JDK8的新特性
Java学习:JDK8的新特性 一.十大特性 Lambda表达式 Stream函数式操作流元素集合 接口新增:默认方法与静态方法 方法引用,与Lambda表达式联合使用 引入重复注解 类型注解 最新的 ...
- Java 各个版本中的新特性
新特性你知道多少? Java 8 Lambda 表达式 接口增加默认方法等 方法引用 流 Stream Java 9 模块系统 交互式工具jshell .of() 创建不可变集合 接口支持私有方法 更 ...
- MySQL 8.0.2复制新特性(翻译)
译者:知数堂星耀队 MySQL 8.0.2复制新特性 MySQL 8 正在变得原来越好,而且这也在我们MySQL复制研发团队引起了一阵热潮.我们一直致力于全面提升MySQL复制,通过引入新的和一些有趣 ...
- (数据科学学习手札73)盘点pandas 1.0.0中的新特性
本文对应脚本及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 毫无疑问pandas已经成为基于Pytho ...
随机推荐
- jsack
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr016.html#BABGHEJB
- (原创)用c++11打造好用的variant(更新)
关于variant的实现参考我前面的博文,不过这第一个版本还不够完善,主要有这几个问题: 内部的缓冲区是原始的char[],没有考虑内存对齐: 没有visit功能. 没有考虑赋值构造函数的问题,存在隐 ...
- Mac安装mtr与brow安装
Mac安装mtr与brow安装 Mac里比较好的安装mtr方式是用Homebrew 或者MacPorts,本来想安装Homebrew,但大概是GFW的问题,下载地址无法访问,因为没有全局FQ,暂时不考 ...
- 【驱动】linux设备驱动·入门
linux设备驱动 驱动程序英文全称Device Driver,也称作设备驱动程序.驱动程序是用于计算机和外部设备通信的特殊程序,相当于软件和硬件的接口,通常只有操作系统能使用驱动程序. 在现代计算机 ...
- Hadoop守护进程【简】
[转自]http://xzx4959.blog.163.com/blog/static/47868170201311901848348/ 一般如果正常启动hadoop,我们可以在master上通过jp ...
- js实现冒泡事件,点击ul给子标签添加相同事件和阻止冒泡事件
$('#LocalLife_PopUp_layer').find('.SelectCity_Cont ul').click(function(e){ var e=e||windo ...
- 【Ubuntu】查看GPU状态
watch -n 10 nvidia-smi TensorFlow指定GPU CUDA_DEVICE_ORDER="PCI_BUS_ID" CUDA_VISIBLE_DEVICES ...
- poj2528(线段树+区间离散)
题意:那个城市里要竞选市长,然后在一块墙上可以贴海报为自己拉票,每个人可以贴连续的一块区域,后来帖的可以覆盖前面的,问到最后一共可以看到多少张海报.思路:一看就知道是线段树,只是说要利用到离散化,也不 ...
- centos 配置subversion svn
Subversion是一个自由,开源的版本控制系统. 1.安装: yum install subversion 2.配置 mkdir -p /var/svn/svnrepos #新建文件夹 svnad ...
- [Python] 探索性编程与idleX
1 探索式编程 前面介绍过几个Python的Interactive Shell,对于Python, Ruby这类动态语言来说,一个交互式的shell(用 emacs的术语来说,叫做REPL,也就是Re ...