黑马程序员 java基础加强——jdk1.5新特性—枚举
2013-12-02 16:00
513 查看
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
jdk1.5新特性—枚举
一:枚举作用:枚举的作用就是要让某个类型的变量只能取若干固定值中的一个。否则,编译就会报错。枚举可以让编译器在编译时就控制程序的填写的值是否合法,
而普通变量没有办法达到这一步,所以枚举应运而生。
二:案例:
比如一个项目中表示星期,如果用普通变量,则可能有人用1—7表示星期一到星期日,但也有可能有人用0-6来表示,这样程序就会变得很麻烦,采用枚举就可以轻松的解决。
三:代码案例
a:用普通类来模拟枚举:定义一个Weekday来模拟枚举类的功能。
分析:1,因为数据元素为固定的,所以要把构造函数私有化,防止外部来new出 别的实例对象。
2,为了方便外部的访问,把实例变量定义为共有的静态的成员变量
3,可以有若干共有方法和抽象方法,例如本例中的nextDay就要定义为抽象的。需要不同的子类来实现。
四:枚举的基本应用
1,代码
a:name()返回实例变量的名称,toStirng()方法返回的也是。
b:ordinal()方法返回实例成员的位置,第几个就返回几。
c:valueOf(String str)将参数里的String类型的字符串转变成同名的枚举类型的对象,这个很重要,比如在网页的应用中,用户提交的都是字符串,就需要我们把它转化为枚举,继而在经行处理。
d:values()返回封装了实例成员的数组,拿到数组后可以遍历每一个元素,进行操作。
五:带有构造方法和抽象方法的枚举
1,代码:
分析:
1,enum是枚举的关键字,类似于class
2,构造函数必须私有
3,实例后的括号代表实例在初始化的时候,调用哪个构造函数。缺省为调用空的构造函数。例如在Weekday中MON与MON()是一样效果的
3,每个元素是枚举子类生成的实例对象,这些对象都采用内部类的方式
---- ASP.Net+Android+IOS开发、.Net培训、期待与您交流!--------详细请查看:http://edu.csdn.net------
jdk1.5新特性—枚举
一:枚举作用:枚举的作用就是要让某个类型的变量只能取若干固定值中的一个。否则,编译就会报错。枚举可以让编译器在编译时就控制程序的填写的值是否合法,
而普通变量没有办法达到这一步,所以枚举应运而生。
二:案例:
比如一个项目中表示星期,如果用普通变量,则可能有人用1—7表示星期一到星期日,但也有可能有人用0-6来表示,这样程序就会变得很麻烦,采用枚举就可以轻松的解决。
三:代码案例
a:用普通类来模拟枚举:定义一个Weekday来模拟枚举类的功能。
package cn.itcast.day1; public abstract class WeekDay1 { private WeekDay1(){} public final static WeekDay1 SUN = new WeekDay1(){ @Override public WeekDay1 nextDay() { // TODO Auto-generated method stub return MON; } }; public final static WeekDay1 MON = new WeekDay1(){ @Override public WeekDay1 nextDay() { // TODO Auto-generated method stub return SUN; } }; public abstract WeekDay1 nextDay(); /* public WeekDay nextDay(){ if(this == SUN){ return MON; }else{ return SUN; } } */ public String toString(){ return this==SUN?"SUN":"MON"; } }
分析:1,因为数据元素为固定的,所以要把构造函数私有化,防止外部来new出 别的实例对象。
2,为了方便外部的访问,把实例变量定义为共有的静态的成员变量
3,可以有若干共有方法和抽象方法,例如本例中的nextDay就要定义为抽象的。需要不同的子类来实现。
四:枚举的基本应用
1,代码
package cn.itcast.day1; public class EnumTest { public static void main(String[] args) { WeekDay1 weekDay = WeekDay1.MON; System.out.println(weekDay.nextDay()); WeekDay weekDay2 = WeekDay.FRI; System.out.println(weekDay2); System.out.println(weekDay2.name()); System.out.println(weekDay2.ordinal()); System.out.println(WeekDay.valueOf("SUN").toString()); 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");} } 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;} } } 运行结果: SUN second first first first first first first FRI FRI 5 SUN 7分析:枚举封装了一些方法:
a:name()返回实例变量的名称,toStirng()方法返回的也是。
b:ordinal()方法返回实例成员的位置,第几个就返回几。
c:valueOf(String str)将参数里的String类型的字符串转变成同名的枚举类型的对象,这个很重要,比如在网页的应用中,用户提交的都是字符串,就需要我们把它转化为枚举,继而在经行处理。
d:values()返回封装了实例成员的数组,拿到数组后可以遍历每一个元素,进行操作。
五:带有构造方法和抽象方法的枚举
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;} }
分析:
1,enum是枚举的关键字,类似于class
2,构造函数必须私有
3,实例后的括号代表实例在初始化的时候,调用哪个构造函数。缺省为调用空的构造函数。例如在Weekday中MON与MON()是一样效果的
3,每个元素是枚举子类生成的实例对象,这些对象都采用内部类的方式
---- ASP.Net+Android+IOS开发、.Net培训、期待与您交流!--------详细请查看:http://edu.csdn.net------
相关文章推荐
- 黑马程序员--Java基础加强(2)-- JDK1.5新特性之可变参数,增强for,自动拆装箱,枚举
- 黑马程序员---java基础加强---jdk1.5新特性之注解
- 黑马程序员--Java基础加强(4)--- JDK1.5新特性之JavaBean、注解
- 黑马程序员---java基础加强---jdk1.5新特性之泛型
- 黑马程序员---Java基础加强---JDK1.5新特性:注解
- 黑马程序员-java基础加强-JDK1.5新特性注解
- 黑马程序员_Java基础加强_jdk1.5重要新特性详解
- Java基础加强<一>_MyEclipse、JDK1.5新特性、枚举、反射
- <黑马程序员>枚举--(java基础加强1.5新特性)
- 黑马程序员-java基础加强-JDK1.5新特性-泛型
- 黑马程序员---Java基础加强---JDK1.5新特性
- Java基础加强: Jdk1.5新特性 枚举
- 黑马程序员---java基础加强---高新技术JDK1.5新特性
- 黑马程序员基础加强——JDK1.5的新特性: 自动拆箱和机制 枚举
- 黑马程序员-java基础加强-JDK1.5新特性
- 黑马程序员---Java基础加强---JDK1.5新特性:泛型
- Java 基础加强 - JDK1.5 新特性 - 枚举
- 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型
- Java基础-----jdk1.5新特性(静态导入,增强for循环,枚举)
- Java 基础加强 - JDK1.5新特性 - 注解