泛型
- 概述:是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。
- 格式:<数据类型>
注意:该数据类型只能是引用类型。 - 好处:
A.把运行时期的问题提前到了编译期间
B.避免了强制类型转换
C.优化了程序设计,解决了黄色警告线问题,让程序更安全 - 泛型的前世今生
A.泛型的由来:Object类型作为任意类型的时候,在向下转型的时候,会隐含一个转型问题
B.泛型类:把泛型定义在类上,格式:public class 类名<泛型类型1,…>(注意:泛型类型必须是引用类型)
C.泛型方法:把泛型定义在方法上,格式:public <泛型类型> 返回类型 方法名(泛型类型 .)
D.泛型接口:把泛型定义在接口上,格式:public interface 接口名<泛型类型1…>
E.泛型高级通配符
? :任意类型,如果没有明确,那么就是Object以及任意的Java类了
? extends E :向下限定,E及其子类
? super E :向上限定,E及其父类 - 一般在集合中使用
增强for循环
- 是for循环的一种
- 格式:for(元素的数据类型 变量名 : 数组或者Collection集合的对象) {
使用该变量即可,该变量其实就是数组或者集合中的元素。
} - 好处:简化了数组和集合的遍历
- 弊端:增强for循环的目标不能为null。建议在使用前,先判断是否为null。
静态导入
- 可以导入到方法级别的导入。
- 格式:import static 包名....类名.方法名;
- 注意事项
A:方法必须是静态的
B:如果多个类下有同名的方法,就不好区分了,还得加上前缀。 所以一般我们并不使用静态导入,但是一定要能够看懂。
可变参数
- 如果我们在写方法的时候,参数个数不明确,就应该定义可变参数。
- 格式:修饰符 返回值类型 方法名(数据类型... 变量) {}
注意:
A.该变量其实是一个数组名
B.如果一个方法有多个参数,并且有可变参数,可变参数必须在最后 - Arrays工具类的一个方法
asList()把数组转成集合。(注意:这个集合的长度不能改变。)