黑马程序员-张老师基础加强1-枚举
2014-06-06 18:30 黑马程序员* 阅读(264) 评论(0) 收藏 举报基本知识点:
1.静态导入,如import static java.lang.Math.一般的导入:导入一个类或者一个包中的所有类。
静态导入:导入的是一个类中的某个静态方法或者全部的静态方法。
2.overload和override的区别:
3.自动装箱和自动拆箱。
自动装箱:Integer num =3;(将基本数据类型变成包装类)
自动拆箱:Integer num=3;num+3;(本来只有基本数据类型才可以参与运算)
4.享元模式:对象很小,用的次数非常多,内部有共同的属性。变将其封装作为共享物件,以减少内存的使用率。对象很小,有很多的相同属性(内部状态),而且用的次数很多。所以就可以封装一个对象,不同的东西变成外部的属性,作为方法的参数传入。如将-128-127的数据,放在线程池中作为共享,不用每次都另开辟内存空间。
例如:我们在输入”dffdddd”的时候,”d”要重复,变将”d”封装成对象。“d”在字符序列中的位置是不一样的(显示的时候),但是他们共享的是一个对象。
5.枚举
为什么要有枚举?在定义星期几或性别变量时,怎么定义?这时就用枚举。
枚举:定义一组常量,变量的取值只能再该常量列表中。
好处;可以在编译时期控制源程序中填写的非法信息。普通变量则无法实现。
模拟枚举类:该类是抽象的。构造方法必须私有防止被外部创建对象。
abstract class enmuDemo{
public static final enmuDemo RED= new enmuDemo(){
public enmuDemo nextDay() {
return RED;
}};
private enmuDemo(){}
public abstract enmuDemo nextDay();
}
可以看出:枚举的成员是一个对象,并用内部;类实现。
主函数调用:System.out.println(Traffic.Red);
public enum TrafficLamp{
RED(1),GREEN,YELLO,BLUE;
TrafficLamp(){
System.out.println("Constructor....run");
}
TrafficLamp(int x){
System.out.println(x);
} }
运行结果: 1
Constructor....run
Constructor....run
Constructor....run
YELLO
总结:在调用枚举的常量时,所有的常量的对象都被创建了,即使没有调用。枚举似单例,需要先实例化一次,方便以后调用。
单个成员的枚举就是单例。
应用1:常量 以逗号分隔。最后一个分号可以省略。但是后面有方法时,必须加。常量的类型都是:public static final
Putblic enum TrafficLamp{
Red,Green,yello;
}
利用反射获取枚举类型的修饰符:
int mod =TrafficLamp.class.getField("RED").getModifiers();
String modtype = Modifier.toString(mod);
System.out.println(modtype);
运行结果:public static final
应用2:switch可以使用byte shot int char enum
public enum TrafficLamp{
RED,GREEN,YELLO
}}
public static void show(){
//枚举是一种特殊的类,其中的每个元素都是该类的一个对象,可以
TrafficLamp lamp = TrafficLamp.RED;
switch(lamp){
case RED:
System.out.println("green");
break;
case GREEN:
System.out.println("green");
break;
case YELLO:
System.out.println("green");
break;
}
}
应用3:带有构造方法和抽象方法的枚举类
public enum TrafficLamp{
RED(1){
public TrafficLamp nextLamp(){
return GREEN;
}
} ,GREEN {
public TrafficLamp nextLamp() {
return RED;
}
};
TrafficLamp(){} //空参构造
TrafficLamp(int x){} //有参构造
public abstract TrafficLamp nextLamp();//抽象方法
}}
总结:需要覆盖抽象方法。直接在成员的后面加{}即可。
枚举的写法:RED和RED()是一样的效果。都是默认调用空参构造方法。
public enum TrafficLamp{
RED,GREEN();
public void nextLamp(){
} }
枚举总结:
1.枚举相当于一个类,可以定义成员变量,构造方法,普通方法。其中,枚举的列表元素必须放在最前面。
2.枚举的构造方法必须是私有的
3.RED和RED()是一样的效果。都是默认调用空参构造方法
4.枚举中只有一个成员时,可以作为单例模式。
浙公网安备 33010602011771号