JDK5的新特性(常见):自动拆装箱、泛型、增强for、静态导入、可变参数、枚举 泛型☆ (1)泛型概述 是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。参数化类型,把类型当做参数一样的传递。 (2)格式: ArrayList<数据类型> array = new ArrayList<数据类型>(); 注意:该数据类型只能是引用类型。 泛型如果明确写的时候,前后必须一致 (3)好处: A:把运行时期的问题提前到了编译时期 B:避免了强制类型转换 C:优化了程序设计,解决了黄色警告线问题,让程序更安全 (4)泛型的前世今生 A:泛型的由来 早期的时候,我们使用Object类型作为任意类型,向上转型是没有任何问题的,但是在向下转型的时候其实隐含了一个转型问题,也就是说这样的程序是不安全的,所以JAVA在JDK5后引入了泛型,提高程序的安全性。 B:泛型类 把泛型定义在类上 格式:public class 类名<泛型类型1,泛型类型2,…> 例子:public class Student<T> 注意:泛型类型必须是引用类型 C:泛型方法 把泛型定义在方法上 格式:public <泛型类型> 返回类型 方法名(泛型类型 对象) 例子:public <T> void show(T t){ System.out.println(t); } 例子: D:泛型接口 把泛型定义在接口上 格式:public interface 接口名<泛型类型1…> 例子:public interface Inter<T> ★实现类在实现接口的时候 第一种:已经知道什么类型 public class InterImpl implements Inter<String>{ public void show(String t){ System.out.println(t); } } 第二种:还不知道什么类型(情况较多) public class InterImpl<T> implements Inter<T>{ public void show(T t){ System.out.println(t); } } E:泛型高级通配符 ? 任意类型,如果没有明确,那么就是Object以及任意的Java类了 ? extends E 向下限定,E及其子类 ? super E 向上限定,E及其父类 (5)我们在哪里使用呢? 一般是在集合中使用。 增强for循环☆ (1)是for循环的一种,就是用来替代迭代器的 (2)格式: for(元素的数据类型 变量名 : 数组或者Collection集合的对象) { 使用该变量即可,该变量其实就是数组或者集合中的元素。 } (3)好处: 简化了数组和集合的遍历 (4)弊端 增强for循环的目标不能为null。建议在使用前,先判断是否为null。 file:///C:\Users\MAOJUN~1\AppData\Local\Temp\ksohtml\wpsA309.tmp.jpg 静态导入 (1)可以导入到方法级别的导入 (2)格式: import static 包名....类名.方法名; (3)注意事项: A:方法必须是静态的 B:如果多个类下有同名的方法,就不好区分了,还得加上前缀。 所以一般我们并不使用静态导入,但是一定要能够看懂。 可变参数☆ (1)如果我们在写方法的时候,参数个数不明确,就可以考虑定义可变参数 (2)格式: 修饰符 返回值类型 方法名(数据类型... 变量) { } (3)例子: public int sum(int... a){ } (4)注意点: 该变量a其实是一个数组名,可以通过增强for完成求和方法 如果一个方法有多个参数,并且有可变参数,可变参数必须在最后 (5)Arrays工具类的一个方法 public static <T> List<T> asList(T... a):把数组转成集合 注意:这个集合的长度不能改变。不能进行增加、删除等功能,支持修改功能 因为它是将数组转成一个集合,本质还是数组,长度不变 自动拆装箱☆ JDK5以后,简化了定义方式 Integer x = new Integer(4); //可以直接写成Integer x = 4; file:///C:\Users\MAOJUN~1\AppData\Local\Temp\ksohtml\wpsA31A.tmp.jpg 自动装箱:基本类型--引用类型 自动拆箱:引用类型--基本类型,通过intvalue() ★注意Integer x = null;会报错NullPointException 建议是否为Null以后,在使用 练习☆ A:集合的嵌套遍历 file:///C:\Users\MAOJUN~1\AppData\Local\Temp\ksohtml\wpsA31B.tmp.jpg B:产生10个1-20之间的随机数,要求随机数不能重复 C:键盘录入多个数据,以0结束,并在控制台输出最大值
|