[1-01-01].第78節:Java8新特性 - Lambda表達式

java基礎語法大綱


一、Lambda 表達式

1.1.概述:

  • 1.Lambda 是一個匿名函數,我們可以把 Lambda 表達式理解為是一段可以傳遞的代碼(將代碼像數據一樣進行傳遞)
  • 2.使用Lambda 表達式可以寫出更簡潔、更靈活的代碼。作為一種更緊湊的代碼風格,使Java的語言表達能力得到了提升
  • 3.Lambda 表達式的本質 就是函數式接口的實例
    • 一方面Lambda 表達式作為接口的實現類的對象
      在這里插入圖片描述
    • 另一方面Lambda 表達式是一個匿名函數
      在這里插入圖片描述

1.2.語法:

  • 1.在Java 8 語言中引入的一種新的語法元素和操作符->,該操作符被稱為 Lambda 操作符或箭頭操作符。它將 Lambda 分為兩個部分:
    • 左側:指定 Lambda 表達式需要的參數列表,就是接口中抽象方法的形參列表
    • 右側:指定 Lambda 體,是抽象方法的實現邏輯,就是抽象方法的方法體、即Lambda 表達式要執行的功能

1.3.體會:將冗余的匿名內部類轉Lambda表達式:

a.案例1:實現多線程轉匿名函數:

第1步:實現啟動線程:

  • 1.當需要啟動一個線程去完成任務時:
    • 首先通過java.lang.Runnable接口來定義任務內容
    • 然后使用java.lang.Thread類來啟動該線程。代碼如下:
package com.atguigu.fp;public class UseFunctionalProgramming {public static void main(String[] args) {new Thread(new Runnable() {@Overridepublic void run() {System.out.println("多線程任務執行!");}}).start(); // 啟動線程}
}

代碼分析: 對于Runnable的匿名內部類用法,可以分析出幾點內容:

  • Thread類需要Runnable接口作為參數,其中的抽象run方法是用來指定線程任務內容的核心:
    • 為了指定run的方法體,不得不需要Runnable接口的實現類;
    • 為了省去定義一個RunnableImpl實現類的麻煩,不得不使用匿名內部類;
    • 必須覆蓋重寫抽象run方法,所以方法名稱、方法參數、方法返回值不得不再寫一遍,且不能寫錯;
  • 實際上,似乎只有方法體才是關鍵所在

從匿名類到 Lambda 的轉換舉例:

  • 匿名內部類轉Lambda表達式:
    在這里插入圖片描述

b.案例2:TreeSet案例:

在這里插入圖片描述

c.案例3:比較器Comparator():

  • 1.匿名函數類:
    在這里插入圖片描述
  • 2.Lambda形式:
    在這里插入圖片描述
  • 3.方法應用形式:
    在這里插入圖片描述

二、在6種情況下Lambda 表達式使用:

情況1:無參,無返回值

a.語法:

在這里插入圖片描述

b.案例:

在這里插入圖片描述


情況2:Lambda 需要一個參數,但是沒有返回值

a.語法:

在這里插入圖片描述

b.案例:

在這里插入圖片描述


情況3:數據類型可以省略,因為可由編譯器推斷得出,稱為“類型推斷”

a.語法:

在這里插入圖片描述

b.舉例:

在這里插入圖片描述


情況4:Lambda 若只需要一個參數時,參數的小括號可以省略

a.語法:

在這里插入圖片描述

b.舉例:

在這里插入圖片描述


情況5:Lambda 需要兩個或以上的參數,多條執行語句,并且可以有返回值

a.語法:

在這里插入圖片描述

b.舉例:

在這里插入圖片描述


情況6:當 Lambda 體只有一條語句時,return 與大括號若有,都可以省略

a.語法:

在這里插入圖片描述

b.舉例:

在這里插入圖片描述


類型推斷說明:

  • 1.在Lambda 表達式中的參數類型都是由編譯器推斷得出的。Lambda表達式中無需指定類型,程序依然可以編譯,這是因為 javac 根據程序的上下文,在后臺推斷出了參數的類型
  • 2.Lambda 表達式的類型依賴于上下文環境,是由編譯器推斷出來的。這就是所謂的“類型推斷”。
    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86447.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86447.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86447.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【2025.6.27 校內 NOI 模擬賽】總結(貪心, 容斥、組合計數, dsu on tree、 虛樹)

文章目錄 時間安排反思題解[六省聯考 2017] 期末考試(貪心, 枚舉)[JSOI2019] 神經網絡(容斥, 組合計數, 樹背包)[ZJOI2019] 語言(dsu on tree, 虛樹, 結論&am…

實際前端開發中,常用指令的封裝

實際前端開發中,常用指令的封裝 全局指令處理步驟main.ts指令目錄結構src/directives/index.ts 一、輸入框空格禁止指令1、指令文件clearSpace.ts2、指令使用 全局指令處理步驟 main.ts import { createApp } from "vue"; import App from "./App.…

鴻蒙OH南向開發 輕量系統內核(LiteOS-M)【異常調測】

基本概念 OpenHarmony LiteOS-M提供異常接管調測手段,幫助開發者定位分析問題。異常接管是操作系統對運行期間發生的異常情況進行處理的一系列動作,例如打印異常發生時異常類型、發生異常時的系統狀態、當前函數的調用棧信息、CPU現場信息、任務調用堆棧…

算法-堆排序

文章目錄 整體架構流程技術細節小結 整體架構流程 大頂推:是構建一個完整的二叉樹 大頂推:即父節點的值大于左右子樹的值。 循環構建大頂推 在給定的數組,既可以明確樹的高度。 在循環的時候,構建樹的高度從lgn至0。即從堆低往堆…

【鴻蒙HarmonyOS Next App實戰開發】二維碼生成技術實現與解析

隨著移動應用開發中對便捷交互體驗的需求日益增長,二維碼作為信息傳遞的重要載體,其生成與使用變得越來越普遍。本文將基于鴻蒙HarmonyOS應用開發框架,詳細介紹如何實現一個功能完備的二維碼生成器,并附上完整代碼解析。 注意該實…

1 Studying《Is Parallel Programming Hard》6-9

目錄 Chapter 6 Partitioning and Synchronization Design 6.1 分區練習 6.2 設計準則 6.3 同步粒度 6.4 并行快速路徑 6.5 超越黨派分歧 6.6 分區、并行和優化 Chapter 7 Locking 7.1 活命 7.2 鎖的類型 7.3 鎖定實施問題 7.4 基于鎖的存在性保證 7.5 鎖定&a…

Java練習題精選16-20

Java練習題精選16-20 一、第十六題二、第十七題三、第十八題四、第十九題五、第二十題一、第十六題 現有一個存放學生成績的數組{66, 77, 88, 99},要求將該數組正序輸出每個下標所對應的元素。 public class Test {public static void main(String[] args) {int<

新能源知識庫(68)汽車電鍍與蒸汽

汽車電鍍是提升零部件耐磨性、抗腐蝕性和美觀性的關鍵工藝&#xff0c;其流程根據基材&#xff08;金屬或塑料&#xff09;和部件功能需求有所差異。 汽車電鍍是以 基材特性和 功能需求為導向的精密工藝&#xff1a; ?金屬件?&#xff1a;核心流程為 ?除油→酸洗→電鍍→鈍…

Veo 3 視頻生成大模型完整操作教程(2025)

隨著 AI 多模態能力的飛躍&#xff0c;Google DeepMind 發布的 Veo 3 成為了生成視頻領域的一顆重磅炸彈。它不僅能夠根據文本生成高質量的視頻畫面&#xff0c;還能同步生成對白、背景音和環境音&#xff0c;是目前最接近真正“AI 導演”的大模型。 本文將帶你詳細了解 Veo 3…

10【認識文件系統】

1 認識硬件——磁盤 1.1 物理構成 磁盤是計算機中唯一的機械設備&#xff0c;同時也是一種外部存儲設備&#xff08;外設&#xff09;。早期的計算機通常配備的是機械硬盤&#xff08;HDD&#xff09;&#xff0c;依靠磁頭和盤片的機械運動來進行數據的讀寫。但隨著用戶對計算…

Windows命令連接符的安全風險分析與防御策略

1. 命令連接符簡介 在 Windows 的命令行環境&#xff08;CMD/PowerShell&#xff09;中&#xff0c;命令連接符用于在同一行執行多個命令&#xff0c;提高效率。然而&#xff0c;攻擊者常利用這些符號構造惡意命令&#xff0c;繞過安全檢測或執行多階段攻擊。 常見命令連接符…

大屏可視化制作指南

一、大屏可視化概述 &#xff08;一&#xff09;概念 大屏可視化是指通過大屏幕展示復雜數據的視覺呈現形式&#xff0c;它借助圖形、圖表、地圖等元素&#xff0c;將海量數據以直觀易懂的方式呈現出來&#xff0c;幫助用戶快速理解數據背后的含義和價值。 &#xff08;二&a…

Halcon ——— OCR字符提取與多類型識別技術詳解

工業視覺實戰&#xff1a;OCR字符提取與多類型識別技術詳解 在工業自動化領域&#xff0c;OCR字符提取是產品追溯、質量控制和信息讀取的核心技術。本文將深入解析Halcon中OCR字符提取的全流程&#xff0c;重點解釋核心算子參數&#xff0c;并提供完整的工業級代碼實現。 一、O…

嵌入式項目:基于QT與Hi3861的物聯網智能大棚集成控制系統

關鍵詞&#xff1a;MQTT、物聯網、QT、網絡連接、遠程控制 一、系統概述 本系統是一套完整的智能大棚監控解決方案&#xff0c;由兩部分構成&#xff1a; 基于Hi3861的嵌入式硬件系統&#xff08;負責環境數據采集和設備控制&#xff09;基于Qt開發的跨平臺控制軟件&#xf…

揭開 Git 裸倉庫的神秘面紗:`git clone --mirror` 詳解與使用指南

大家好&#xff01;在使用 Git 進行版本控制時&#xff0c;我們最熟悉的莫過于那些帶有工作目錄的本地倉庫了——我們在里面編輯文件、提交代碼&#xff0c;然后推送到遠程倉庫。但有時候&#xff0c;我們可能會遇到一種特殊的倉庫&#xff1a;裸倉庫&#xff08;Bare Reposito…

opensuse安裝rabbitmq

您好&#xff01;安裝 RabbitMQ 消息隊列是一個非常棒的選擇&#xff0c;它是許多現代應用架構中的核心組件。 在 openSUSE Tumbleweed 上安裝 RabbitMQ 主要有兩種流行的方式&#xff1a;一種是使用系統的包管理器 zypper&#xff0c;另一種是使用 Docker 容器。我將為您詳細…

超詳細YOLOv8/11圖像菜品分類全程概述:環境、數據準備、訓練、驗證/預測、onnx部署(c++/python)詳解

文章目錄 一、環境準備二、數據準備三、訓練四、驗證與預測五、模型部署 一、環境準備 我的都是在Linux系統下&#xff0c;訓練部署的&#xff1b;模型訓練之前&#xff0c;需要配置好環境&#xff0c;Anaconda、顯卡驅動、cuda、cudnn、pytorch等&#xff1b; 參考&#xff1…

JUC:4.線程常見操作與兩階段終止模式

在線程中&#xff0c;wait()、join()、sleep()三個方法都是進行阻塞的方法。對應可以使用interrupt()方法進行打斷&#xff0c;被打斷后線程會拋出打斷異常&#xff0c;但是不會修改IsInterrupt&#xff0c;也就是此時去調用IsInterrupted()方法后獲得的實際上是false。 而當線…

分布式session解決方案

在實際項目中&#xff0c;前臺代碼部署在nginx中&#xff0c;后臺服務內嵌了tomcat運行在不同的節點中&#xff0c;常見的架構如下&#xff1a; 在上述架構中&#xff0c;nginx轉發前臺請求&#xff0c;第一次登錄后&#xff0c;將用戶登錄信息寫入到一臺服務session中&#xf…

UDP 緩沖區

UDP 有接收緩沖區&#xff0c;沒有發送緩沖區 引申問題 1、為什么沒有發送緩沖區&#xff1f; 直接引用原文 “因為 UDP 是不可靠的&#xff0c;它不必保存應用進程的數據拷貝&#xff0c;因此無需一個真正的發送緩沖區” 2、沒有發送緩沖區的情況下&#xff0c;sendto 的數…