Java基础加强-jdk1.5的一些新特性

时间:2021-09-14 19:41:31

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;

}

}