JDK 5.0 特性
1.静态导入(import static 语句导入一个类中的某个静态方法或所有静态方法)
如: import static java.lang.Math.*;
2.可变参数
1. 只能出现在参数列表的最后
2. ...位于变量类型和变量名之间,前后有无空格都可以
3. 调用可变参数方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数
3.增强for循环 for (type 变量名:集合变量名){...}
1.迭代变量必须在()中定义
2.集合变量可以是数组或实现了Iterable接口的集合类
4.基本数据类型的自动拆箱与装箱
Integer i1 = 10;
Integer i2 = 10;
System.out.println(i1 == i2); (true)
( /*这些小数字(一个字节 -127~128)使用的频率可能会比较高,所以,不必为每个数字赋一个对象,而是第一次将这些小数字包装成对象后,便将其缓存到一个池中,下次
要把这些小数字装成Integer对象,就往池里面找,池里面有的话,就从池子里面拿,不封装成对象*/)
Integer i3 = 138;
Integer i4 = 138;
System.out.println(i3 == i4); (false)
享元设计模式 (flyweight):
有很多个小的对象,对象之间有很多属性相同,把这些小对象 变成一个对象,那些不同的属性将其变成该大对象方法的参数,称之为外部状态,相同的属性称之为内部状态
如:在编辑中的一些字母数据,不会每写一个字母,就创建一个对象,而是创建26个对象,对应26个字母,这26个对象有很多属性(如都是a)相同,但是位置(x坐标,y坐标)不同
可以为26个对象设置一个display(int x,int y)方法,
5.枚举(枚举可以编译器在编译时就可以控制源程序中填写非法值,普通变量的方式在开发阶段无法实现这一目标)
用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能
1.私有的构造方法
2.每个元素分别用一个公有的静态成员变量表示
3.可以有若干公有方法或一个抽象方法 例如:要提供nextDay方法必须是抽象的,采用抽象方法定义nextDay就将大量的if..else语句转移成了一个个独立的类
枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象,例如可以调用WeekDay.SUN.getClass.getName 和WeekDay.class.getName().
java5的枚举的基本应用
Weekday weekday = Weekday.SUN;
weekday.xxxxx();
public enum {SUN,MON;}
带有构造方法的枚举
//1.枚举类构造函数权限必须为私有 2.构造函数要放到静态变量后面
带有抽象方法的枚举
public abstract Light nextLight();
RED(60){
@Override
public Light nextLight() {
return GREEN;
}
}