Java 8 ——企业中使用最普遍的版本,那么了解它的新特性是非常有必要的
目录
一、函数式接口
二、Lamdba表达式
三、方法引用
四、Stream API
3.1 创建
方法一:通过集合
方法二:通过数组
方法三:通过Stream的of()
方法四:创建无限流
3.2中间操作
1.筛选与切片
2.映射
3.排序
3.3终止操作
1.匹配与查找
2.归约
3.收集
五、LocalDatetime
六、Optional类
七、接口中定义默认方法
八、Nashorn JavaScript 引擎
一、函数式接口
只有一个方法的接口,通常用@FunctionalInterface注解标识。
二、Lamdba表达式
对匿名内部类的替代,代码更简洁,只适用于函数式接口。
Runnable runnable = new Runnable(){@Overridepublic void run() {System.out.println("调用");}};Runnable runnable1 = ()->{System.out.println("调用");};
三、方法引用
方法引用是一种简化 Lambda 表达式的写法,它不带任何参数,可以通过方法的名字来引用一个已有的方法或构造器。
方法引用的语法格式是 :
-
类名::方法名
-
对象名::方法名
,
例如 String::length
表示一个获取字符串长度的函数,System.out::println
表示一个输出内容到控制台的消费者。
四、Stream API
Stream API对数组或者集合中的数据进行操作。 对于MySql,Oracle等可以用SQL语句处理,对于MongDB,Radis等NoSQL的数据需要java层面去处理,其中之一便有Stream API。
注意:
-
Stream自己不会存储元素,是用来对集合进行相关计算
-
Stream不会改变源对象,相反,他们会返回一个持有结果的新的Stream
-
Stream操作是延迟进行的,他们会等到需要结果的时候才执行
4.1 创建
方法一:通过集合
List<对象> a = new Arrylist<>();
//返回一个顺序流
Stream<对象> stream = a.stream;
//返回一个并行流
Stream<对象> parallelStream = a.parallelStream();
方法二:通过数组
int[] arr = new int[]{对象1,对象2,对象3};
IntStream stream = Arrays.stream(arr);
方法三:通过Stream的of()
Stream<Integer> stream = Stream.of(1,2,3);
方法四:创建无限流
//取前十个偶数
Stream.iterate(0,t->t+2).limit(10).forEach(System.out::println);
4.2中间操作
注意:一旦执行了中止操作,原来的stream无法再使用,需要再次创建!
1.筛选与切片
2.映射
3.排序
4.3终止操作
1.匹配与查找
2.归约
3.收集
五、LocalDatetime
LocalDate、LocalTime、LocalDateTime(第三代日期)
六、Optional类
用来判断空指针,避免空指针异常问题
七、接口中定义默认方法
接口中可以编写方法,用default修饰
八、Nashorn JavaScript 引擎
Nashorn JavaScript 引擎:Java 8 提供了一个新的 Nashorn JavaScript 引擎,它可以让开发者在 JVM 上运行特定的 JavaScript 应用。Nashorn JavaScript 引擎使用了新的语法解析器和编译器,比旧版的 Rhino 引擎更加高效和快速。Nashorn JavaScript 引擎可以通过