一、JDK1.5新特性(一)静态导入 导入静态的方法 import stataic ... (二)可变参数出现在形参最后,就是一个数组 测试JDK中具有可变参数的类Arrays.asList()方法。分别传多个参、传数组,传数组又传参的情况。 注意:传入基本数据类型数组的问题。 从JDK 5开始, Java 允许为方法定义长度可变的参数。语法: public void foo(int … args){} 注意事项: 调用可变参数的方法时, 编译器将自动创建一个数组保存传递给方法的可变参数,因此,程序员可以在方法体中以数组的形式访问可变参数 可变参数只能处于参数列表的最后, 所以一个方法最多只能有一个长度可变的参数 (三)forEach循环迭代实现了Iterable接口的类 引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦! 因此JDK5中定义了一种新的语法——增强for循环,以简化此类操作。增强for循环只能用在数组、或实现Iterator接口的集合类上 语法格式: for(变量类型变量 :需迭代的数组或集合){} (四)枚举enum一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。 JDK 5新增的 enum 关键字用于定义一个枚举类。 JDK5中扩展了swith语句,它除了可以接收int, byte, char, short外,还可以接收一个枚举类型。 若枚举类只有一个枚举值,则可以当作单态设计模式使用。 可以在枚举元素之后定义私有构造方法、抽象方法、方法 枚举原理 //枚举的原理 //如果枚举只有一个值,那么这个枚举就是单例 public abstract class WeekDay { private WeekDay(){} private WeekDay(int day){} public static final WeekDay SUN = new WeekDay(7){ @Override public WeekDay nextDay() { return MON; }}; public static final WeekDay MON = new WeekDay(){ @Override public WeekDay nextDay() { // TODO Auto-generated method stub return null; }}; public abstract WeekDay nextDay(); } 枚举的特点 1. 构造方法私有 2. 定义public final static 本类常量 3. 可以定义方法、抽象方法 枚举Enum类中的方法 name(); ordinal(); valueof(Class, String); values(); 在jdk中找不到,但是每个枚举类都具有该方法,用于遍历枚举的所有枚举值 用抽象方法定义nextDay就将大量的if..else语句转移成立一个独立的类 如果枚举只有一个成员,那么这个枚举就是一个单例 enum WeekDay{ MON(){ @Override public WeekDay nextDay() { return TUE; } }, TUE{ @Override public WeekDay nextDay() { return MON; } };//,WED,THURS,FRI,SAT,SUN //注意,这里一定要有";"分号 //构造函数是私有的,并且在创建实例之后 private WeekDay(){} public abstract WeekDay nextDay(); } (五)自动拆箱/封箱JDK5.0的语法允许开发人员把一个基本数据类型直接赋给对应的包装类变量, 或者赋给 Object 类型的变量,这个过程称之为自动装箱。 自动拆箱与自动装箱与之相反,即把包装类对象直接赋给一个对应的基本类型变量。 Integer a = 127; //自动装箱 Integer a = Integer.valueOf(127); a = a + 5; //自动拆箱 a = Integer.valueOf(a.intValue()+5);
|