Java?Lambda表達(dá)式語法及用法示例
Java Lambda 表達(dá)式
Java Lambda 表達(dá)式是 Java 8 引入的一種函數(shù)式編程特性,它是一種輕量級的匿名函數(shù),允許我們將函數(shù)作為方法的參數(shù)進(jìn)行傳遞。Lambda 表達(dá)式可以理解為是一種簡潔的方式來表示可傳遞的代碼塊,它可以替代傳統(tǒng)的匿名內(nèi)部類,使得代碼更加簡潔、易讀和易維護(hù)
語法
parameters
:表示 Lambda 表達(dá)式的參數(shù)列表,可以為空或包含一個或多個參數(shù)。->
:箭頭符號,用于分隔參數(shù)列表和 Lambda 表達(dá)式的主體部分。expression
或{ statements; }
:表示 Lambda 表達(dá)式的主體部分。如果主體部分只有一條語句,則可以直接使用表達(dá)式,否則需要使用花括號{}
將多條語句括起來
(parameters) -> expression 或 (parameters) ->{ statements; }
特性
- **可選類型聲明:**不需要聲明參數(shù)類型,編譯器統(tǒng)一識別參數(shù)值
- **可選的參數(shù)圓括號:**一個參數(shù)無需定義圓括號,但多個參數(shù)需要定義圓括號
- **可選的大括號:**如果主體包含了一個語句,就不需要使用大括號
- **可選的返回關(guān)鍵字:**如果主體只有一個表達(dá)式返回值則編譯器會自動返回值,大括號需要指定表達(dá)式返回了一個數(shù)值
Lambda 表達(dá)式
// 1. 不需要參數(shù),返回值為 5 () -> 5 // 2. 接收一個參數(shù)(數(shù)字類型),返回其2倍的值 x -> 2 * x // 3. 接受2個參數(shù)(數(shù)字),并返回他們的差值 (x, y) -> x – y // 4. 接收2個int型整數(shù),返回他們的和 (int x, int y) -> x + y // 5. 接受一個 string 對象,并在控制臺打印,不返回任何值(看起來像是返回void) (String s) -> System.out.print(s)
變量作用域
Lambda 表達(dá)式可以訪問外部的局部變量,但是這些局部變量必須是 effectively final,即只能賦值一次的變量。如果在 Lambda 表達(dá)式中嘗試修改局部變量,編譯器會報錯。例如,Lambda 表達(dá)式中不能修改方法中的參數(shù)或在 Lambda 表達(dá)式外部的局部變量
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 表達(dá)式中嘗試修改 x 或 message,會導(dǎo)致編譯錯誤 // x = 20; // 編譯錯誤 // message = "Hi"; // 編譯錯誤 }; runnable.run(); } }
舉例
Lambda 表達(dá)式創(chuàng)建了一個新的線程,并將一個代碼塊傳遞給線程。這個代碼塊包含一個循環(huán),用于輸出從 1 到 10 的數(shù)字;使用 Lambda 表達(dá)式可以避免編寫繁瑣的匿名內(nèi)部類,使代碼更加簡潔和易讀
public class LambdaExample { public static void main(String[] args) { // 使用 Lambda 表達(dá)式創(chuàng)建一個線程 new Thread(() -> { for (int i = 1; i <= 10; i++) { System.out.println("Count: " + i); } }).start(); } }
總結(jié)
到此這篇關(guān)于Java Lambda表達(dá)式語法及用法的文章就介紹到這了,更多相關(guān)Java Lambda表達(dá)式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot中用fastjson處理返回值為null的屬性值
在本篇文章里小編給大家整理的是一篇關(guān)于springboot中用fastjson處理返回值問題詳解內(nèi)容,需要的朋友們參考下。2020-03-03SpringBoot超詳細(xì)講解多數(shù)據(jù)源集成
今天分享下SpringBoot多數(shù)據(jù)源集成,我怕麻煩,這里我覺得我的集成也應(yīng)該是最簡單的,清晰明了2022-05-05java 實(shí)現(xiàn)當(dāng)前時間加減30分鐘的時間代碼
這篇文章主要介紹了java 實(shí)現(xiàn)當(dāng)前時間加減30分鐘的時間代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08Spring Cloud 2023 新特性支持同步網(wǎng)關(guān)
這篇文章主要為大家介紹了Spring Cloud 2023 新特性支持同步網(wǎng)關(guān)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10