您的位置:首页 > 编程语言 > Java开发

黑马程序员_基础加强第一天——JDK1.5新特性

2014-04-09 20:17 387 查看
静态导入:

例:import static 类.*;
可以导入该类中所有的静态方法。

可变参数:

问题:一个方法接受的参数个数不固定
特点:
只能出现在参数列表的最后
...位于变量类型和变量名之间
调用含有可变参数的方法时,编译器为该可变参数隐含创建一个数组,方法体中以数组的形式访问可变参数

例: public static int add( int... args)

java5的增强for循环:

例:for(int arg:args)

基本数据类型的自动装箱与拆箱:

Interger intObj = 3;【自动装箱】
intObj + 12;【自动拆箱】
当数字在-128~127(一个字节)之间时使用享元设计模式,不用搞出很多个对象

枚举:
为什么要有枚举类?
枚举就是要让某个类型的变量的取值为若干个固定值中的一个,否则编译器报错
枚举可以让编译器编译时就控制源程序中的非法值

用普通类如何实现枚举功能?定义一个WeekDay来模拟枚举功能
私有的构造方法
每个元素分别用一个公有的静态成员变量表示
可以有若干公有方法或抽象方法。例如WeekDay中将nextDay()方法定义成抽象的,大量if-else语句就转化成一个个独立的子类(利用匿名内部类)
模拟枚举功能的WeekDay类:
public abstract class WeekDay {
private WeekDay(){}
//通过匿名内部类新建WeekDay子类对象:
public static final WeekDay SUN = new WeekDay(){

@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return MON;
}

};
public static final WeekDay MON = new WeekDay(){

@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return SUN;
}

};

public String toString(){
return (this==SUN)?"SUN":"MON";
}

public abstract WeekDay nextDay();  //抽象方法
}
测试类:
public class EnumTest {

public static void main(String[] args) {
// TODO Auto-generated method stub
WeekDay weekDay = WeekDay.MON;
System.out.println(weekDay.nextDay());
}

}


枚举的基本应用:
举例:定义一个WeekDay的枚举
扩展:枚举类的values, valueOf, name, toString, ordinal等方法
public class EnumTest {

public static void main(String[] args) {
// TODO Auto-generated method stub
//测试WeekDay枚举以及其各种方法:
WeekDay weekDay = WeekDay.SUN;
System.out.println(weekDay);
System.out.println(weekDay.name());
System.out.println(weekDay.ordinal());
//静态方法:
System.out.println(WeekDay.valueOf("SUN"));
System.out.println(WeekDay.values());
}

//枚举
public enum WeekDay{
SUN,MON,TUE,WED,THU,FRI,SAT;
}

}


枚举相当于一个类,可以定义构造方法、成员变量、普通方法和抽象方法
public class EnumTest {

public static void main(String[] args) {
// TODO Auto-generated method stub
TrafficLight trafficLight = TrafficLight.Yellow;
System.out.println(trafficLight.nextLight());
}

public enum TrafficLight{
Red(30){
public TrafficLight nextLight(){
return Green;
}
},
Yellow(5){
public TrafficLight nextLight(){
return Red;
}
},
Green(35){
public TrafficLight nextLight(){
return Yellow;
}
};

//成员变量
private int time;
//带参数的构造方法
private TrafficLight(int time){
this.time = time;
}
//抽象方法
public abstract TrafficLight nextLight();
}

}


枚举的元素必须位于枚举体中最开始的部分,枚举元素成员列表后要有分号与其他成员分隔
枚举只有一个元素时,可以作为一种单例实现方式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java加强