黑马程序员--枚举
来源:互联网 发布:网络安全问题及对策 编辑:程序博客网 时间:2024/05/15 00:31
------------android培训、java培训、期待与您交流!--------------
一、枚举概述
枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。
枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。
把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。
枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段
无法实现这一目标。
枚举只有一个成员时,就可以作为一种单例的实现方式。
1、私有的构造方法。
2、每个元素分别用一个公有的静态成员变量表示。
3、可以自定义若干个公有方法或抽象方法。
模拟星期的枚举类(第一种方式)
package demo;public class WeekDay {private WeekDay() {}public static final WeekDay SUN = new WeekDay();public static final WeekDay MON = new WeekDay();public WeekDay nextDay() {if (this == SUN) {return MON;} else {return SUN;}}public String toString() {return this == SUN ? "SUN" : "MON";}}
模拟星期的枚举类(第二种方式)
package cn.itcast.day1;public abstract class WeekDay1 {private WeekDay1(){}public final static WeekDay1 SUN = new WeekDay1(){@Overridepublic WeekDay1 nextDay() {// TODO Auto-generated method stubreturn MON;}};public final static WeekDay1 MON = new WeekDay1(){@Overridepublic WeekDay1 nextDay() {// TODO Auto-generated method stubreturn SUN;}};public abstract WeekDay1 nextDay();/*public WeekDay nextDay(){if(this == SUN){return MON;}else{return SUN;}}*/public String toString(){return this==SUN?"SUN":"MON";}}第二种方式采用了抽象方法定义nextDay将大量的if...else语句转移到一个个独立的对象中实现。
二、枚举类常用方法
public enum WeekDay{
SUN,MON,TUE,WED,THI,FRI,SAT;
}
WeekDay weekDay2 = WeekDay.FRI;
System.out.println(weekDay2.name());//返回枚举对象的名称FRI
System.out.println(weekDay2.ordinal());//返回此枚举对象的在第几个位置
System.out.println(WeekDay.valueOf("SUN").);返回SUN对象
System.out.println(WeekDay.values().length);返回此枚举类拥有的对象个数
应用示例:
public class WeekDayTest { public static void main(String[] args) { WeekDay weekDay = WeekDay.SUN; for(WeekDay weekday: weekDay.values()){ System.out.println("第一个是:"+weekday.ordinal()+" 星期:"+weekday.name()); } WeekDay weekday = WeekDay.valueOf("SUN"); System.out.println(weekday); System.out.println(WeekDay.values().length);} }
三、带构造函数的枚举类
public enum WeekDay {SUN(1), MON(), TUE, WED, THI, FRI, SAT;private WeekDay() {System.out.println("first");}private WeekDay(int day) {System.out.println("second");}}结果是Sun(1)调用的是带参数的构造函数,而其他的对象调用的是无参构造函数。
四、交通灯枚举
public enum TrafficLamp {RED(30) {public TrafficLamp nextLamp() {return GREEN;}},GREEN(45) {public TrafficLamp nextLamp() {return YELLOW;}},YELLOW(5) {public TrafficLamp nextLamp() {return RED;}};public abstract TrafficLamp nextLamp();private int time;private TrafficLamp(int time) {this.time = time;}}}
------------android培训、java培训、期待与您交流!--------------
- 《黑马程序员》枚举复习
- <黑马程序员>枚举
- 黑马程序员__java_枚举
- 黑马程序员_枚举
- 黑马程序员 枚举
- 黑马程序员之枚举
- 黑马程序员-java-枚举
- 黑马程序员-枚举
- 黑马程序员_Java枚举
- 黑马程序员---枚举
- 黑马程序员:枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员-枚举
- 黑马程序员,枚举总结
- 黑马程序员-枚举
- 黑马程序员 枚举日记
- 黑马程序员---枚举学习
- 保时捷时尚秀卡宴改哈曼宽体大包围
- 设计模式----适配器模式
- eclipse启动出错:Failed to load the JNI shared library jvm.dll
- WinCE平台的C#程序中调用MessageBeep发出一些系统自带的声音,而不用使用playsound
- mstar uboot源码链接方式
- 黑马程序员--枚举
- c++一些面试
- [LeetCode] Median of Two Sorted Arrays [16]
- 我近期的感想和计划
- 类模板 与 模板类
- 编写计算“两个整数的最大公约数”程序
- java处理大数的相关知识
- 我写的情书
- 十五周——电子词典