java在从jdk1.5开始加入了一些新的内容,在以前的java课上没学过这些,所以这些都算是新内容,在这次的学习中得多用心才能学好。
先说一个小的知识点:java5增加的一个for循环
for(Object i:a){ }
这里的a可以是数组的名字,也可以是集合或者迭代器的名字。
这就是用迭代的方式遍历数组或者集合。
枚举:
学习枚举是从张老师的课程中学习的,通过问题的引入讲解了枚举。第一个案例就是日期的定义。
问题描述:要定义一周7天,假设分别用1-7表示周一到周日,但是有人可能会把某一天定义为0.
使用枚举类,就把一周的几天定义为固定的常量。
想要赋值就必须指定为枚举类里面规定好的。
枚举就是为了让某个类型的变量在取值时只能去若干个固定值中的一个,如果取其他值,在程序编译的时候就会报错。
通过枚举可以让编译器在编译时就可以控制源程序中写入非法值。而普通的变量无法完成这一点。
public enum WeekDay1{
SUN,MON,TUE,WEN,THU,FRI,SAT;
}
通过用普通的类可以实现枚举功能,例如定义一个WeekDay类,实现以下几点:
1. 使用私有的构造方法
2. 每一个元素分别用一个共有的静态成员变量表示
3. 提供共有方法或抽象方法,例如,要提供nextDay方法必须是抽象的。
第二个案例:模拟交通灯
需求分析,通过使用枚举实现交通灯三个灯的来回变换。
交通灯只应该有三个颜色,必须是红,绿,黄,不能有其他的颜色,所以通过枚举可以保证不会被定义为除这三种颜色以外的颜色。
上面程序枚举类使用了私有的构造函数,而且提供了抽象的nextLamp方法,表示将要变为什么颜色的灯。
Enum类覆盖了toString()方法,我们在写枚举类时也可以根据需要覆盖Enum类中的toString()方法。
Enum的构造方法:
Enum
protected Enum(String name,
int ordinal)
单独的构造方法。程序员无法调用此构造方法。该构造方法用于由响应枚举类型声明的编译器发出的代码。
构造方法为保护类型,也就是说不可以通过new的方法创建一个Enum对象。
其实枚举是一种特殊的类,其中的每一个元素都是该类的一个实例对象。
枚举的目的就是为了规范某些客观事物的固有属性,防止被制造出不应该存在的属性。