以下代码实践来自 菜鸟网
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表达式入门学习资料 本文旨在为新手提供易于理解的C# Lambda表达式入门学习资料,帮助读者快速掌握Lambda表达式的基础知识和应用场景。 Lambda表达式是什么? -------------------- Lambda表达式是一种...
通过多个示例详细演示了.Net中C#语言lambda表达式的基本用法,主要包括三个方面内容: 1.什么是lambda表达式 2.理解lambda表达式 3.使用lambda表达式
Java Lambda表达式入门示例 Java Lambda表达式是Java 8中引入的一种新特性,它允许开发者使用更简洁的代码来创建只有一个抽象方法的接口(函数式接口)的实例。Lambda表达式主要作用就是代替匿名内部类的繁琐语法。...
1、函数式编程入门:通过阅读本源码资源,可以快速掌握Lambda表达式的基本语法和特性,为进一步学习函数式编程打下基础。 2、提高代码可读性:使用Lambda表达式可以减少样板代码,并使代码更加简洁和易读。本源码...
计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习...
Lambda表达式和stream流的入门 java 响应式编程
Java中的Lambda表达式是Java SE 8引入的一个关键特性,它是函数式编程风格的重要组成部分。在其他编程语言中,如Scala、Haskell等,Lambda表达式早已被广泛使用,但Java直到第八个版本才正式支持。Lambda表达式使得...
为了更深入地理解Python中的lambda表达式以及相关的函数编程技巧,可以参考一些专门的教程和专题,如《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、...
这里的 `view -> Log.d(TAG, "按钮被点击,lambda表达式")` 就是一个 Lambda 表达式,它的结构如下: 1. `(view)` 是参数列表,可以有零个或多个参数,参数类型可指定也可省略,这里省略了 `View` 类型。 2. `->` 是...
一、Lambda表达式入门 1. Lambda的起源与概念 Lambda表达式源自于数学中的λ演算,它提供了一种表示匿名函数的方法。在Java中,Lambda表达式是Java 8引入的一个重要特性,它支持函数式编程的思想,使得我们可以以更...
Java Lambda入门教程旨在引导开发者了解并掌握Java 8引入的一项重要特性——Lambda表达式。Lambda表达式是函数式编程的核心元素,它简化了代码,尤其是处理匿名内部类时的复杂性,使得Java语言更加简洁、易读。在这...
12.1_lambda表达式|函数式编程__匿名函数、高阶函数、装饰器|Python3.8入门_&_进阶_&_原生爬虫实战完全解
总的来说,通过阅读和实践这个"java lambda入门到高级代码实例",你将能够全面掌握Lambda表达式的各种用法,包括基础和高级特性,从而提升你的Java编程技能。记得多动手实践,理论知识结合实际操作,才能更好地吸收...
Java8通过引入Lambda表达式极大地简化了代码,并为Java语言带来了全新的编程范式。 **1.1 Lambda表达式的概念** Lambda表达式是一种可以直接使用的函数,它可以接受参数并返回结果。在Java中,Lambda表达式通常...
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...
LambdaDemo.zip文件包含的是一个关于如何使用Java Lambda表达式的入门示例。在这个压缩包中,只有一个名为LambdaDemo的文件,可能是Java源代码文件,用于演示Lambda表达式的各种用法。 Lambda表达式的核心概念在于...
Lambda表达式入门 •Lambda表达式主要作用就是代替匿名内部类的繁琐语法。它由三部分组成: –形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。 ...
1. **Lambda表达式**:Lambda表达式是一种简洁的函数式编程元素,允许将代码块作为参数传递给方法,简化了对集合的操作和其他回调机制。它通过消除冗余的匿名内部类,使得代码更加紧凑和易读。 2. **函数式接口**:...