java1.8的特性,java1.8新特性
1.新增概念:stream、lambda、函数式编程
2.函数式接口(@functionalInterface):只包含一个方法的接口,但可以有默认(default)方法
lambda的本质是实现了函数式接口唯一方法的实现类,只有一个方法才不需要指定
3.lambda无法单独出现,需要一个函数式接口来盛放
4.forEach实现了内部迭代
外部迭代:显式地进行迭代操作,集合元素的访问由外部控制
5.几个常用迭代的时间:
for(String s : list) : 50134
for(int i = 0; i < list.size(); i++) : 74608
for(Iterator iterator = list.iterator; iterator.hasnext();) : 476464
list.forEach(System.out::println) : 1357154
list.forEach(e -> System.out.println(e)) : 87608685
6.java 1.5:泛型、注解、concurrent并发包
java 1.8:lambda表达式、stream
7.lambda表达式是语法糖,为了简化语句、配合stream使用,取代冗长的内部类定义
语法糖:编译器推断出此处需要参数列表 -> 函数体
8.new Thread( new Runnable() {
public void run() {
System.out.println("truth");
}
}).start();
Thread需要一个实现run方法的类 ---> 取消 new Runnable ---> 取消 public void run ---> () -> { }
9.Predicate:谓词
java8添加了util.function包,里面包含多个新的@functionalInterface函数式接口,所谓匿名内部类就是其一个实现
10.匿名内部类:
1.方法引用:有了实现,直接引用方法
但是有了类似Runnable()的实现,new Thread(new Runnable)和new Thread(new Runnable::run)有区别吗。。。好像运行时间会缩短
方法引用不能是一个单独的方法,必须是 “实现类::方法名“
2.lambda:函数式接口只有一个方法,编译器自动识别补全代码
11.lambda表达式又被称为闭包、匿名函数
12.map:将集合类进行转换,一一映射
reduce:将所有值合并为一个,折叠操作;max、min、sum等都是
13.申明变量:父类 = 子类实现
因为必须能够使用所申明变量的所有方法
14.lambda表达式必须使用外界的final类型变量,因为内部类使用外部变量时必须为final类型
可见,lambda是内部类具体方法的实现
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
