java 1.5的新特性

来源:互联网 发布:服务端客户端程序java 编辑:程序博客网 时间:2024/05/19 11:44

java 1.5新特性:
可变参数与overLoad

overload vs voerride:重载与重写

一、可变参数:
 定义一个函数  函数名(int x ,int···args)//三个点
 可变参数特点:
 1:只能出现在参数列表的最后。
 2:···位于变量类型和变量名之间,前后有无空格都可以。
 3:调用可变参数的方法时,编译器为该可变参数隐含创建一个说组,在方法体中以数组的形式访问可 

变参数。
 4:记得在调用该函数是参数的设置问题。

二、for循环增强

  故上述函数可改成for(int arg:args)····
 
三、基本数据类型的自动装箱和拆箱:

如Integer iObj=3;//属于自动装箱
System.out.println(iObj+12);//属于自动解箱

Integer i1=3;
Integer i2=3;
此时i1,i2一样,但数超过(-128-127之间)时i1与i2就不一样了(由于大数使用频率低)·
由于数小而需要很多对象时就可以采用。

享元模式:flyweight//很重要的概念
如果有很多很小的对象,他们有相同的属性(内部状态)可以把它们变成一个对象,那些不相同的属性

把它们变成方法的参数,称之为外部状态。

四:JDK1.5新特性
枚举:
枚举就是要让某个类型的变量取值只能为若干个固定值的一个。否则编译器就就好报错。
每个枚举元素都是一个对象。

public class EnumTest
{

public static void main(String []args)
{
WeekDay weekDay=WeekDay.SUN;

}

public abstract class WeekDay
{
private  WeekDay(){}

public final static Weekday SUN=new WeekDay(){

public WeekDay nextDay(){
return MON;
}
};

public final static Weekday MON=new WeekDay(){

public WeekDay nextDay(){
return SUN;
}
};
 
public abstract nextDay();
//重写toString方法

public String toString()
{
return this==SUN?"SUN":"MON";
}
}
上述采用抽象方法定义nextDay将大量if else 语句转移成了一个独立的类


实现带有抽象方法的枚举:

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;
public TrafficLamp(int time)
{
this.time=time;
}
}
//如果枚举只有一个成员时便可以作为一种单例的实现方法。