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