以下代码实践来自 菜鸟网
https://www.runoob.com/java/java8-lambda-expressions.html
公司项目中有用到Lambda表达式,自己又不会,看代码感觉都费劲,于是决定学习探索一番,我选了菜鸟网里的demo跟着实践,逐步学习,希望可以进步。
jdk版本:java version "1.8.0_181"
代码开发环境:idea
直接看demo
/**
* 语法
* lambda 表达式的语法格式如下:
*
* (parameters) -> expression
* 或
* (parameters) ->{ statements; }
* 以下是lambda表达式的重要特征:
*
* 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
* 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
* 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
* 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
* 注意事项
* lambda 表达式只能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。
* 可以直接在 lambda 表达式中访问外层的局部变量:
* lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义)
*/
public class LambdaTest {
static final String salution = "Hello! ";
public static void main(String[] args) {
System.out.println("测试Lambda表达式---学习Lambda表达式");
// 1.不需要参数,返回值为5
// () -> 5
/*() -> {
return 5;
}*/
// 2.接收一个参数(数字类型),返回其2倍的值
// x -> 2 * x
/*x -> {
return 2 * x;
}*/
// 3.接收两个参数 (数字),并返回他们的差值
// (x, y) -> x - y
/* (x, y) -> {
return x - y;
} */
// 4 接收2个int型整数,返回他们的和
// (int x ,int y) -> x + y
/* (int x ,int y) -> {
return x + y;
}*/
// 5 接收一个String 对象,并在控制台打印,不返回任何值(看起来像是返回void)
// (String s) -> System.out.println(s)
/* (String s) -> {
return System.out.println(s);
}*/
LambdaTest tester = new LambdaTest();
// 类型声明
MathOperation addition = (int a, int b) -> a + b;
// 不用类型声明
MathOperation subtraction = (a, b) -> a - b;
// 大括号中的返回语句
MathOperation multiplication = (int a, int b) -> {return a * b;};
// 没有大括号及返回语句
MathOperation division = (int a, int b) -> a / b;
System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
System.out.println("10 × 5 = " + tester.operate(10, 5, multiplication));
System.out.println("10 / 5 = " + tester.operate(10, 5, division));
// 不用括号
GreetingService greetingService1 = message -> System.out.println("Hello " + message);
// 用括号
GreetingService greetingService2 = (message) -> System.out.println("Hello " + message);
greetingService1.sayMessage("Runoob");
greetingService2.sayMessage("Google");
// lambda表达式只能引用标记了final的外层局部变量
GreetingService greetingService3 = message -> System.out.println(salution + message);
greetingService3.sayMessage("Runoob "); // Hello! Runoob
final int num = 1;
Converter<Integer,String> s = (param) -> System.out.println(String.valueOf(param + num));
s.convert(2); // 输出结果为 3
}
interface MathOperation {
int operation(int a, int b);
}
interface GreetingService {
void sayMessage(String message);
}
public interface Converter<T1, T2>{
void convert(int i);
}
private int operate(int a, int b, MathOperation mathOperation){
return mathOperation.operation(a, b);
}
}
/**
测试Lambda表达式---学习Lambda表达式
10 + 5 = 15
10 - 5 = 5
10 × 5 = 50
10 / 5 = 2
Hello Runoob
Hello Google
Hello! Runoob
3
*/
分享到:
相关推荐
一份易上手的C# Lambda表达式入门学习资料,适合新手完全不懂Lambda表达式的阅读
通过多个示例详细演示了.Net中C#语言lambda表达式的基本用法,主要包括三个方面内容: 1.什么是lambda表达式 2.理解lambda表达式 3.使用lambda表达式
1、函数式编程入门:通过阅读本源码资源,可以快速掌握Lambda表达式的基本语法和特性,为进一步学习函数式编程打下基础。 2、提高代码可读性:使用Lambda表达式可以减少样板代码,并使代码更加简洁和易读。本源码...
主要介绍了Java Lambda表达式,结合简单实例形式分析了Lambda表达式功能、原理、用法及相关操作注意事项,需要的朋友可以参考下
Lambda入门介绍
Lambda表达式和stream流的入门 java 响应式编程
主要介绍了JDK8新特性——Lambda表达式的相关资料,帮助大家更好的理解和学习JAVA开发,感兴趣的朋友可以了解下
lambda作为1.8后裔重要内容,必须进行掌握。内含入门概念介绍和实例解释。
12.1_lambda表达式|函数式编程__匿名函数、高阶函数、装饰器|Python3.8入门_&_进阶_&_原生爬虫实战完全解
lambda表达式入门代码
本篇文章主要介绍了30分钟入门Java8之lambda表达式学习,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Lambda作为函数式编程中的基础部分,在其他编程语言中早就广为使用,但在Java领域中发展较慢,直到java8,才开始支持Lambda。网上关于Lambda的教程很多,今天小编给大家分享一篇快速入手Lambda的教程。
Java8新特性初级入门学习
1 Lambda表达式 2 1.1 Lambda语法糖 2 1.1.1 语法 2 1.1.2 Lambda表达式可使用的变量 3 1.1.3 lambda表达式中的this概念 3 1.2 函数式接口- Consumer/Predicate/Function/Supplier 4 1.1.4 什么是函数式接口 4 1.1.5...
Lambda表达式入门 •Lambda表达式主要作用就是代替匿名内部类的繁琐语法。它由三部分组成: –形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。 ...
在Java8中,我们可以直接通过方法引用来简写lambda表达式中已经存在的方法,这篇文章主要介绍了30分钟入门Java8之方法引用学习,有兴趣可以了解一下。
1. C# 3.0 入门系列(一) 从linq开始引C# 3.0。 2. C# 3.0入门系列(二) 数据库的准备,引入Linq To Sql的准备。...12. C#3.0入门系列(十二)-Lambda表达式中Lifting Lambda表达式中的Lifting
分别对LINQ,LAMBDA表达式,匿名方法做了一下介绍和用法简介,可以作为入门的预备知识来看
高阶函数与 Lambda 表达式 内联函数(Inline Function) 其他 解构声明(Destructuring Declaration) 集合(Collection) 值范围(Range) 类型检查与类型转换 this 表达式 相等判断 操作符重载(Operator overloading) Null...
DOTNET_C#基础快速入门教程,100多页的pdf文档,包括了常用的基础知识点: 数据类型 类型转换 变量、常量、运算符 ...Lambda表达式 闭包(Closure) LINQ技术 多线程 网络编程 窗体设计 Form窗体 MDI窗体 常用控件