JAVA8新特性

1.Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。

带有参数变量的表达式,是一段可以传递的代码,可以被一次或多次执行

是一种精简的字面写法,其实就是把匿名内部类中“一定”要做的工作省略掉

然后由JVM通过推导把简化的表达式还原

格式:  (parameters参数) -> expression表达式或方法体

paramaters:

类似方法中的形参列表,这里的参数是函数式接口里的参数

->:可理解为“被用于”的意思

方法体:

可以是表达式也可以代码块,是函数式接口里方法的实现

如果负责运算的代码无法用表达式表示,可以使用编写方法实现

但必须用{}包围并按需明确使用 return语句

需求:对字符串数组按字符串长度排序

(1).Lambda的优点

a.极大的减少代码冗余,同时可读性也好过冗长的匿名内部类

b.与集合类批处理操作结合,实现内部迭代,并充分利用现代多核CPU进行并行计算。之前集合类的迭代都是外部的,即客户代码。而内部迭代意味着由Java类库来进行迭代,而不是客户代码

(2).和匿名内部类的区别

a.在lambda中,this不是指向lambda表达式产生的那个对象,而是它的外部对象

b.Java 编译器编译 Lambda 表达式并将他们转化为类里面的私有函数,它使用 Java 7 中新加的 invokedynamic 指令动态绑定该方法,但每一个匿名内部类编译器会为其创建一个类文件


2.方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。

2.函数式接口分类

3.Stream流

Stream概述

是用函数式编程方式在集合类上进行复杂操作的工具,更像一个高级版本的 Iterator

原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作

高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作

Stream 会隐式地在内部进行遍历,做出相应的数据转换

而和迭代器又不同的是,Stream 可以并行化操作

借助于 Lambda 表达式,极大的提高编程效率和程序可读性

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容