JDK1.5和JDK1.8特性对比

JDK1.5的特性

A. 自动封箱/拆箱

B. 增强for循环

C. 静态导入: import static 包名.类名.方法名;--提高了加载效率但是可读性不高

D. 可变参数: 用 ... 定义,本质上是一个数组。在使用的时候可以不传入参数或者是传入任意多个参数或者是数组。定义可变参数的时候必须放在参数列表的末尾,而且只能有一个。

E. 枚举:用enum来定义一个枚举。取值情况能够一一列举并且相对固定。---构造函数默认私有而且只能私有。枚举常量必须放在枚举类的第一行。枚举中可以定义一切方法和属性,也包括抽象方法。所有的枚举默认继承java.lang.Enum

F. 泛型:参数化类型---ParameterizedType。泛型的擦除(用具体类型替换泛型的过程)发生在编译期。要求看懂泛型的继承问题。 ? extends 类/接口---表示上限 ? super 类/接口 --- 表示泛型的下限

G. 反射:Class,Field,Method,Constructor,Annotation,Package --- 解剖一个类,获取这个类的字节码对象,然后根据字节码对象来获取实例对象或者执行指定方法的过程---获取字节码对象:类名.class,对象.getClass(),Class.forName(类的全路径名)

H. 注解:用@interface来定义一个注解。注解中的属性类型只能是基本类型、String、Class、其他注解类型、枚举以及这五种类型的一维数组形式。元注解(作用在注解上的注解):@Target---指定作用范围;@Retention---指定使用周期;@Documented---确定注解是否出现在文档中;@Inherited---确定此注解能否作用在子类上

I. 动态代理

J. 内省

 

JDK1.8的特性

A. 接口中的默认方法:要求必须用default/static修饰

B. Lambda表达式:重写接口中的唯一的抽象方法 (parameters) -> {statements;}

C. 函数式接口:接口中只有一个抽象方法---@FunctionalInterce

D. Stream:用于批量处理数据的流式结构,不是流。

E. 时间包:java.time

LocalDate---只含有日期而不含有时间的类

LocalTime---只含有时间而不含有日期的类

ChronoUnit---枚举类,用于指定时间单位

 

猜你喜欢

转载自www.cnblogs.com/ourbigdata/p/9296368.html