java基础浅学
jdk1.8的新特性
速度更快(垃圾回收机制,HashMap,HashSet,ConcurrentHashMap:分段锁改成CAS算法,),代码更少,强大的Stream API,便于并行,最大化减少空指针异常。
Lambda表达式
简介
什么是lambda?
java8添加的一个新特性,是一个匿名函数。
为什么要使用lambda?
使用lambda表达式可以对接口进行非常简洁的实现。
对接口的要求?
要求接口中定义的必须要实现的抽象方法只能是一个。(没有default)
@FunctionalInterface :修饰函数式接口,接口中的抽象方法只有一个。
ps:字节码指令研究,default
基础语法
() -> { };
//():用来描述参数列表
//{}:用来描述方法体
//->:lambda运算符,读者goes to
语法精简:
1.参数类型可省略;
2.参数数量只有一个,小括号可以省略;
3.方法体只有一个语句,大括号可以省略;
4.方体中唯一的语句是返回语句,省略大括号的同时,return也需要省略。
语法进阶
方法引用:将lambda表达式的实现指向一个已经实现的方法。
//语法:方法隶属者::方法名
//注意:参数数量和类型一定要和接口中定义的方法一致,返回值类型同上。
案例:list排序实现;TreeSet对象排序实现
系统内置函数式接口
闭包问题
提升变量的声明周期,lambda使用局部变量,必须是常量。
Stream Api
概念:jdk8 Api的新成员,允许以声明性方式处理数据集合。是用于对集合迭代器的增强,使之完成更高效的聚合操作(过滤、排序、统计分组)或者大批量数据操作。
特点:(1)代码简介:函数式编程写出的代码简介且意图明确,使用stream接口让你告别for循环。
(2)多核友好:java函数式编程使得编写并行程序变得简单,只需调用方法即可。
流程
把集合转换成stream,操作stream流(stream流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果)
操作符
两种:中间操作符,终止操作符。