当前位置: 首页 > news >正文

Java Lambda 表达式

在这里插入图片描述

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


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 和 messageSystem.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();}
}

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


在这里插入图片描述

http://www.lryc.cn/news/175978.html

相关文章:

  • 数据结构--插入排序
  • 服务器搭建(TCP套接字)-epoll版(服务端)
  • 第一章:最新版零基础学习 PYTHON 教程(第十八节 - Python 表达式语句–Python 中的中断、继续和传递)
  • Spring Cloud Alibaba Ribbon负载均衡器
  • ardupilot开发 ---传感器驱动,外设驱动篇
  • 二叉树的存储
  • List 去重的几种方法
  • UNet网络制作
  • 智能热水器丨打造智能家居新体验
  • Python 十进制转化二进制1.0(简易版)
  • WebGL 选中一个表面
  • open ai chartgpt 安装插件 txyz.ai
  • 【算法思想】贪心
  • freeswitch-01
  • Zookeeper-集群介绍与核心理论
  • 动态分配的内存位置在哪里?
  • Vue3中的Ref与Reactive:深入理解响应式编程
  • Windows10/11显示文件扩展名 修改文件后缀名教程
  • 【C++】手撕string(string的模拟实现)
  • 用python3编译cv_bridge
  • 招商信诺人寿基于 Apache Doris 统一 OLAP 技术栈实践
  • 我的python安装在哪儿了?python安装路径怎么查?
  • 视频汇聚/安防监控平台EasyCVR指定到新的硬盘进行存储录像,如何自动挂载该磁盘?
  • 读博时的建议或心得
  • 3分钟,免费制作一个炫酷实用的数据可视化大屏!
  • 自费访学|金融公司高管赴世界名校伯克利交流
  • Databend 开源周报第112期
  • 如何学习maya mel语言的经验分享
  • 睿趣科技:新手抖音开店卖什么产品好
  • 【新版】系统架构设计师 - 案例分析 - 架构设计<Web架构>