jdk1.5的新特性
1.静态导入: for example:import static java.lang.Math.*;
System.out.println(max(3,4);
这样就可以直接把Math这个类中的静态方法直接导入进来,
调用时就可以不用写类名了更加方便
2.可变参数:for example: public static int add(int a, int ...args){
int sum = a;
for(int =0; i<args.length;i++){
sum += args[i];
}
return sum;
}
只是最后一个参数,以数组的方式返回可变参数
3.增强的for循环 :for(类型 变量名:集合变量名){...}
迭代变量必须在()中定义!
集合变量可以是数组或实现了Iterable接口的集合类。
for example: for(int arg: args){
System.out.println(arg);
}
4.自动装箱与拆箱及享元设计模式:for example: integer i = 3;(自动装箱) System.out.println(i+3);(自动拆箱)
flyweight-->(享元设计模式) integer i = 11; integer i1 = 11; i==i1---->true;
integer i = 136 integer i1 = 136; i==i1---->false;
因为i的值在byte之内,所以像字符串一样存起来了装成了一个对象,方便以后使用。
5. 枚举
定义枚举:和构造方法(必须放在元素列表之后,权限必须为private)
public enum weekDay{
SUN, MON, TUE,WED,THI,FRI,SAT;
private WeekDay(){}
private WeekDay(int Day){}
}
应用枚举:
weekDay wd = weekDay.SUN;......取得相应的枚举对象。很方便的
weekDay wd = weekDay.valueof("SUN");将字符串转成相应的枚举对象;
weekDay[] arr = weekDay.value();还可以将枚举中的各个对象放在一个数组中,方便迭代的取出,可以使用加强的for循环;
实现有抽象方法的枚举: 每个对象后面必须要加上{},这是一种接口式的写法;实现抽象方法。构造方法如果有参数则对象必须要加(args)这个可以想到。下面所示:
public enum TrafficLamp{
RED(30){
public TrafficLamp nextLamp(){
return GREEN
}
},
GREEN(45){
.......
},
YELLOW(5){
.......
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){this.time = time}
}
枚举只有一个成员时,可以作为单例模式使用。(重点)