JDK新特性

JDK8 新特性:

  • lambda 表达式:允许把函数作为参数传递到方法(可以将Lambda表达式理解为一个匿名函数),简化匿名内部类代码。

  • 函数式接口:使用 @FunctionalInterface 标识,有且仅有一个抽象方法,可被隐式转换为 lambda 表达式。

  • 方法引用:可以引用已有类或对象的方法和构造方法,进一步简化 lambda 表达式。

深入理解Java Lambda表达式 - 何鹏的文章 - 知乎
Java-Lambda表达式和“方法引用”的对比和详解

  • 接口:接口可以定义 default 修饰的默认方法,降低了接口升级的复杂性,还可以定义静态方法。

  • 注解:引入重复注解机制,相同注解在同地方可以声明多次。注解作用范围也进行了扩展,可作用于局部变量、泛型、方法异常等。

  • 类型推测:加强了类型推测机制,使代码更加简洁。

Java 8 新特性之泛型的类型推导

  • Optional 类:处理空指针异常,提高代码可读性。

  • Stream 类:引入函数式编程风格,提供了很多功能,使代码更加简洁。
    方法包括 forEach 遍历、count 统计个数、filter 按条件过滤、limit 取前 n 个元素、skip 跳过前 n 个元素、map 映射加工、concat 合并 stream 流等。

  • 日期:增强了日期和时间 API,新的 java.time 包主要包含了处理日期、时间、日期/时间、时区、时刻和时钟等操作。
    (类LocalDate、LocalTime 和 LocalDateTime)

  • JavaScript:提供了一个新的 JavaScript 引擎,允许在 JVM上运行特定 JavaScript 应用。


JDK 7:

  • 数字可以用下划线分割
int a = 100_000_000; // 下划线只是为了让人更易读,Java编译器会去除这些下划线
  • 加上前缀0b或0B就可以写二进制数
int a = 0b1001; // a=9;

JDK 10:

  • 在Java 10中,如果可以从变量的初始值推导出它们的类型。那么可以用var关键字声明局部变量,而无须指定类型。
    • 这样的优点是可以避免重复写类型名,可以直接从等号右边看出类型。
    • var关键字只能用于方法中的局部变量。参数和字段的类型必须声明。

例如,可以不这样声明:

Employee harry = new Employee("Harry Hacker", 50000, 1989, 10, 1);

可以写成这样:

var harry = new Employee("Harry Hacker", 50000, 1989, 10, 1);
posted @ 2021-01-06 20:15  张三丰学Java  阅读(75)  评论(0编辑  收藏  举报