java8

Posted 人生如逆旅,我亦是行人。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java8相关的知识,希望对你有一定的参考价值。

官方文档:

https://www.oracle.com/technetwork/cn/java/javase/8-whats-new-2157071-zhs.html

一、lambda

其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能

lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)

Lambda表达式的语法
基本语法:
(parameters) -> expression

(parameters) ->{ statements; }

举个例子

// 1. 不需要参数,返回值为 5  
() -> 5  
  
// 2. 接收一个参数(数字类型),返回其2倍的值  
x -> 2 * x  
  
// 3. 接受2个参数(数字),并返回他们的差值  
(x, y) -> x – y  
  
// 4. 接收2个int型整数,返回他们的和  
(int x, int y) -> x + y  
  
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)  
(String s) -> System.out.print(s)

函数式接口

函数式接口是只有一个方法的接口,用作lambda表达式的类型。可以使用注解 @FunctionalInterface 说明这个接口是一个函数式接口

举个例子

@FunctionalInterface
public interface Runnable {
 /**
 * When an object implementing interface <code>Runnable</code> is used
 * to create a thread, starting the thread causes the object‘s
 * <code>run</code> method to be called in that separately executing
 * thread.
 * <p>
 * The general contract of the method <code>run</code> is that it may
 * take any action whatsoever.
 *
 * @see java.lang.Thread#run()
 */
 public abstract void run();
}

 

new Thread(() -> System.out.println("java8 start !")).start();
Java8 内置的四大核心函数式接口
 

 





以上是关于java8的主要内容,如果未能解决你的问题,请参考以下文章

Java8 Stream针对List先分组再求和最大值最小值平均值等

通过 Java 正则表达式提取 semver 版本字符串的片段

Java 8 新特性总结

Java Lambda

函数式编程

java代码之美(14)---Java8 函数式接口