前言及常用的可以看这个:
Java8新特性学习-函数式编程(Stream/Function/Optional/Consumer)_icarusliu的专栏-CSDN博客_java 函数式编程
我直接上代码,加上简单的说明
package com.xiongzai.lambda; import java.awt.event.ActionListener; import java.util.function.BinaryOperator; import java.util.function.Consumer; import java.util.function.IntConsumer; public class LambdaDemo { public static void main(String[] args) { /*demo1 ()中没有参数,表示无参方法,返回类型为 void,也可使用大括号*/ Runnable demo1 = () -> System.out.println("Hello World"); demo1 = () -> { System.out.println("Hello World"); }; /*demo2 只有一行代码,一个参数 e,返回类型为 void,也可以是一段代码块,使用大括号({})将代码块括起来*/ IntConsumer demo2 = e -> System.out.println("Hello World"); demo2 = e -> { System.out.println("Hello World"); }; /*()中没有参数,表示无参方法,返回类型为 void,可以用返回或抛出异常来退出*/ Runnable demo3 = () -> { System.out.print("Hello"); System.out.println(" World"); }; demo3 = () -> { int num = 1; if (num == 1) { System.out.print("Hello"); return; } else { try { System.out.println(" World"); } catch (Exception e) { throw e; } } }; /*demo4 并不是将两个数字相加,而是创建了一个函数,用来计算两个数字相加的结果,尽量别用这种方式,防止未知错误 请记住一句话:所有 Lambda 表达式中的参数类型都是由编译器推断得出的*/ BinaryOperator<Long> demo4 = (x, y) -> x + y; /*demo5和demo4一样,只是用的显式声明参数类型,需要使用小括号将参数括起来*/ BinaryOperator<Long> demo5 = (Long x, Long y) -> x + y; } }