网站开发 APP开发 小程序开发 SEO优化 公司新闻

java8都很久了来学学java8的新特性吧

2018-08-03 10:01:09
852

  jdk8的新特性其实对代码的简化开发还是很大帮助的,如果你能正确的应用再自己的代码里面,可以让我们开发的代码变得很简洁整齐。今天我们就一起来学习一下吧。

  一.Lambda表达式

  Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。可以使代码变的更加简洁紧凑。基本的结构是 (参数)->{代码块}注意:

  ①参数类型可省略,编译器可以自己推断

  ②如果只有一个参数,圆括号可以省略

  ③代码块如果只是一行代码,大括号也可以省略

  ④如果代码块是一行,且是有结果的表达式,return可以省略

  事实上,把Lambda表达式可以看做是匿名内部类的一种简写方式。当然,前提是这个匿名内部类对应的必须是接口,而且接口中必须只有一个函数!Lambda表达式就是直接编写函数的:参数列表、代码体、返回值等信息,用函数来代替完整的匿名内部类!

  二.接口的默认方法和静态方法

  默认方法使得开发者可以在 不破坏二进制兼容性的前提下,往现存接口中添加新的方法,即不强制那些实现了该接口的类也同时实现这个新加的方法。

  默认方法和抽象方法之间的区别在于抽象方法需要实现,而默认方法不需要。接口提供的默认方法会被接口的实现类继承或者覆写.

  接口里面也可以通过staitc定义默认方法。接口里面增加默认方法和静态方法,可以避免子类里面重复的复写父类公共方法的问题。

  三.Streams的操作

  即使没有 Stream API,我们依然能够通过完成需求,但无法做到如此简洁、清晰。

  因此熟悉使用Streams api对我们代码简化开发非常重要。

  Stream的使用分为两种类型:

  1)Intermediate,一个Stream可以调用0到多个Intermediate类型操作,每次调用会对Stream做一定的处理,返回一个新的Stream,这类操作都是惰性化的(lazy),就是说,并没有真正开始流的遍历。常用操作:map (mapToInt, flatMap 等)、 filter、 distinctsorted、peek、limit、skip、parallel

  2)Terminal一个Stream只能执行一次terminal 操作,而且只能是最后一个操作,执行terminal操作之后,Stream就被消费掉了,并且产生一个结果。常用操作:forEach、forEachOrdered、toArray、reduce、collect、min、max、count、anyMatch、 allMatch、noneMatch、findFirst、findAny。这些方法的意思都很明了,都是面向函数式的编程,大家可以下去自己尝试一下,处理集合数据可以方便很多。