Java Lambda表达式语法及用法示例
作者:wei_shuo
这篇文章主要给大家介绍了关于Java Lambda表达式语法及用法的相关资料,lambda表达式是JAVA8中提供的一种新的特性,它支持Java也能进行简单的"函数式编程",文中通过代码介绍的非常详细,需要的朋友可以参考下
Java Lambda 表达式
Java Lambda 表达式是 Java 8 引入的一种函数式编程特性,它是一种轻量级的匿名函数,允许我们将函数作为方法的参数进行传递。Lambda 表达式可以理解为是一种简洁的方式来表示可传递的代码块,它可以替代传统的匿名内部类,使得代码更加简洁、易读和易维护
语法
parameters
:表示 Lambda 表达式的参数列表,可以为空或包含一个或多个参数。->
:箭头符号,用于分隔参数列表和 Lambda 表达式的主体部分。expression
或{ statements; }
:表示 Lambda 表达式的主体部分。如果主体部分只有一条语句,则可以直接使用表达式,否则需要使用花括号{}
将多条语句括起来
(parameters) -> expression 或 (parameters) ->{ statements; }
特性
- **可选类型声明:**不需要声明参数类型,编译器统一识别参数值
- **可选的参数圆括号:**一个参数无需定义圆括号,但多个参数需要定义圆括号
- **可选的大括号:**如果主体包含了一个语句,就不需要使用大括号
- **可选的返回关键字:**如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值
Lambda 表达式
// 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 表达式可以访问外部的局部变量,但是这些局部变量必须是 effectively final,即只能赋值一次的变量。如果在 Lambda 表达式中尝试修改局部变量,编译器会报错。例如,Lambda 表达式中不能修改方法中的参数或在 Lambda 表达式外部的局部变量
public class VariableCaptureExample { public static void main(String[] args) { int x = 10; String message = "Hello"; Runnable runnable = () -> { // 可以访问外部局部变量 x 和 message System.out.println("x: " + x); System.out.println("Message: " + message); // 如果在 Lambda 表达式中尝试修改 x 或 message,会导致编译错误 // x = 20; // 编译错误 // message = "Hi"; // 编译错误 }; runnable.run(); } }
举例
Lambda 表达式创建了一个新的线程,并将一个代码块传递给线程。这个代码块包含一个循环,用于输出从 1 到 10 的数字;使用 Lambda 表达式可以避免编写繁琐的匿名内部类,使代码更加简洁和易读
public class LambdaExample { public static void main(String[] args) { // 使用 Lambda 表达式创建一个线程 new Thread(() -> { for (int i = 1; i <= 10; i++) { System.out.println("Count: " + i); } }).start(); } }
总结
到此这篇关于Java Lambda表达式语法及用法的文章就介绍到这了,更多相关Java Lambda表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!