国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java系列】JDK 1.8 新特性之 Lambda表達(dá)式

這篇具有很好參考價(jià)值的文章主要介紹了【Java系列】JDK 1.8 新特性之 Lambda表達(dá)式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【Java系列】JDK 1.8 新特性之 Lambda表達(dá)式,java,面試,java,開(kāi)發(fā)語(yǔ)言


【Java系列】JDK 1.8 新特性之 Lambda表達(dá)式,java,面試,java,開(kāi)發(fā)語(yǔ)言

1、Lambda表達(dá)式介紹

Lambda是一個(gè)匿名函數(shù),我們可以將Lambda表達(dá)式理解為一段可以傳遞的代碼(將代碼像數(shù)據(jù)一樣傳遞)。使用它可以寫出簡(jiǎn)潔、靈活的代碼。作為一種更緊湊的代碼風(fēng)格,使java語(yǔ)言表達(dá)能力得到提升。

2、從匿名類到Lambda轉(zhuǎn)換

package com.chen.test.JAVA8Features;
?
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
?
public class Demo01 {
    private static Logger log = LoggerFactory.getLogger(Demo01.class);
?
    public static void main(String[] args) {
        Runnable t1 =new Runnable(){
            @Override
            public void run(){
                log.info("我是沒(méi)有使用Lambda表達(dá)式:不簡(jiǎn)潔");
            }
        };
        
        Runnable t2 = () -> log.info("我是使用Lambda表達(dá)式:簡(jiǎn)潔、靈活");
        
        t1.run();
        t2.run();
        
    }
}


結(jié)果:

?19:43:39.303 [main] INFO com.chen.test.JAVA8Features.Demo01 - 我是沒(méi)有使用Lambda表達(dá)式:不簡(jiǎn)潔、代碼多
19:43:39.303 [main] INFO com.chen.test.JAVA8Features.Demo01 - 我是使用Lambda表達(dá)式:簡(jiǎn)潔、靈活

3、Lambda表達(dá)式 六種語(yǔ)法格式

Lambda表達(dá)式在java語(yǔ)言中引入了一種新的語(yǔ)法元素和操作。
這種操作符號(hào)為“->”,
Lambda操作符或箭頭操作符,它將Lambda表達(dá)式分割為兩部分。
左邊:指Lambda表達(dá)式的所有參數(shù)
右邊:指Lambda體,即表示Lambda表達(dá)式需要執(zhí)行的功能。

語(yǔ)法格式一:無(wú)參數(shù)、無(wú)返回值,只需要一個(gè)Lambda體

package com.chen.test.JAVA8Features;
?
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
?
public class Demo02 {
    private static Logger log = LoggerFactory.getLogger(Demo02.class);
?
    public static void main(String[] args) {
        Runnable t1 = ()-> log.info("Lambda表達(dá)式:簡(jiǎn)潔、靈活,優(yōu)雅永不過(guò)時(shí)");
        t1.run();
    }
}



22:22:39.125 [main] INFO com.chen.test.JAVA8Features.Demo02 - Lambda表達(dá)式:簡(jiǎn)潔、靈活,優(yōu)雅永不過(guò)時(shí)
?
Process finished with exit code 0

語(yǔ)法格式二:lambda有一個(gè)參數(shù)、無(wú)返回值

package com.chen.test.JAVA8Features;
?
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
?
import java.util.function.Consumer;
?
public class Demo03 {
    private static Logger log = LoggerFactory.getLogger(Demo03.class);
    public static void main(String[] args) {
        Consumer<String> consumer = new Consumer<String>() {
            @Override
            public void accept(String s) {
                log.info(s);
            }
        };
        consumer.accept("愛(ài)與被愛(ài)的區(qū)別");
?
        Consumer<String> consumer1 = (s) -> log.info(s);
        consumer1.accept("接受愛(ài)不一定愛(ài)對(duì)方,愛(ài)一定付出真心愛(ài)");
    }
}
?

23:03:08.992 [main] INFO com.chen.test.JAVA8Features.Demo03 - 愛(ài)與被愛(ài)的區(qū)別
23:03:09.142 [main] INFO com.chen.test.JAVA8Features.Demo03 - 接受愛(ài)不一定愛(ài)對(duì)方,愛(ài)一定付出真心愛(ài)
?
Process finished with exit code 0

?語(yǔ)法格式三:Lambda只有一個(gè)參數(shù)時(shí),可以省略()

package com.chen.test.JAVA8Features;
?
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
?
import java.util.function.Consumer;
?
public class Demo04 {
    private static Logger log = LoggerFactory.getLogger(Demo04.class);
    public static void main(String[] args) {
        Consumer<String> consumer = s -> log.info(s);
        consumer.accept("Lambda只有一個(gè)參數(shù)時(shí),可以省略()");
    }
}

?

23:08:27.295 [main] INFO com.chen.test.JAVA8Features.Demo04 - Lambda只有一個(gè)參數(shù)時(shí),可以省略()
?
Process finished with exit code 0

語(yǔ)法格式四:Lambda有兩個(gè)參數(shù)時(shí),并且有返回值

package com.chen.test.JAVA8Features;
?
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
?
import java.util.Comparator;
?
?
public class Demo05 {
    private static Logger log = LoggerFactory.getLogger(Demo05.class);
?
    public static void main(String[] args) {
        CompareOldMethod(12,10);
        findMaxValue(12,10);
        findMinValue(12,10);
    }
//    沒(méi)有使用Lambda表達(dá)式比較大小
    public static void CompareOldMethod(int num1,int num2){
        Comparator<Integer> comparator = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                log.info("o1:{}",o1);
                log.info("o2:{}",o2);
                return o1 < o2 ? o2 : o1;
            }
        };
        log.info("OldFindMaxValue:{}",comparator.compare(num1,num2));
    }
?
//    使用lambda表達(dá)式
    public static void findMaxValue(int num1,int num2){
        Comparator<Integer> comparatorMax = (o1, o2) ->{
?
            log.info("o1:{}",o1);
            log.info("o2:{}",o2);
            return (o1<o2)? o2 :(o1);
        };
?
        log.info("findMaxValue:{}",(comparatorMax.compare(num1,num2)));
?
    }
    public static void findMinValue(int num1,int num2){
        Comparator<Integer> comparatorMin =  (o1, o2) -> {
            log.info("o1:{}",o1);
            log.info("o2:{}",o2);
            return (o1 < o2) ? o1 : o2;
        };
        log.info("FindMinValue:{}",comparatorMin.compare(num1,num2));
    }
}

?

00:17:10.206 [main] INFO com.chen.test.JAVA8Features.Demo05 - o1:12
00:17:10.206 [main] INFO com.chen.test.JAVA8Features.Demo05 - o2:10
00:17:10.206 [main] INFO com.chen.test.JAVA8Features.Demo05 - OldFindMaxValue:12
00:17:10.315 [main] INFO com.chen.test.JAVA8Features.Demo05 - o1:12
00:17:10.315 [main] INFO com.chen.test.JAVA8Features.Demo05 - o2:10
00:17:10.315 [main] INFO com.chen.test.JAVA8Features.Demo05 - findMaxValue:12
00:17:10.315 [main] INFO com.chen.test.JAVA8Features.Demo05 - o1:12
00:17:10.315 [main] INFO com.chen.test.JAVA8Features.Demo05 - o2:10
00:17:10.315 [main] INFO com.chen.test.JAVA8Features.Demo05 - FindMinValue:10
?
Process finished with exit code 0
?

語(yǔ)法格式五:當(dāng)Lambda體只有一條語(yǔ)句的時(shí)候,return和{}可以省略掉

package com.chen.test.JAVA8Features;
?
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
?
import java.util.Comparator;
?
?
public class Demo05 {
    private static Logger log = LoggerFactory.getLogger(Demo05.class);
?
    public static void main(String[] args) {
        findMaxValue(12,10);
        findMinValue(12,10);
    }
?
//    使用lambda表達(dá)式
    public static void findMaxValue(int num1,int num2){
        Comparator<Integer> comparatorMax = (o1, o2) ->{
?
            log.info("o1:{}",o1);
            log.info("o2:{}",o2);
            return (o1<o2)? o2 :(o1);
        };
?
        log.info("findMaxValue:{}",(comparatorMax.compare(num1,num2)));
?
    }
    public static void findMinValue(int num1,int num2){
        Comparator<Integer> comparatorMin =  (o1, o2) -> (o1 < o2) ? o1 : o2;
?
        log.info("FindMinValue:{}",comparatorMin.compare(num1,num2));
    }
}

?

00:22:31.059 [main] INFO com.chen.test.JAVA8Features.Demo05 - o1:12
00:22:31.075 [main] INFO com.chen.test.JAVA8Features.Demo05 - o2:10
00:22:31.075 [main] INFO com.chen.test.JAVA8Features.Demo05 - findMaxValue:12
00:22:31.075 [main] INFO com.chen.test.JAVA8Features.Demo05 - FindMinValue:10
?
Process finished with exit code 0

語(yǔ)法格式六:類型推斷:數(shù)據(jù)類型可以省略,因?yàn)榫幾g器可以推斷得出,成為“類型推斷”


package com.chen.test.JAVA8Features;
?
import com.mysql.cj.callback.MysqlCallbackHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
?
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;
?
?
public class Demo07 {
    private static Logger log = LoggerFactory.getLogger(Demo07.class);
?
    public static void main(String[] args) {
        dateType();
    }
?
    public static void dateType(){
        Consumer<String> consumer = (String s) -> log.info(s);
        consumer.accept("Hello World !");
?
        Consumer<String> consumer1 = (s) -> log.info(s);
        consumer1.accept("Hello don't date type !");
    }
}
?

系列文章


內(nèi)容 地址 鏈接
JAVA面試 常見(jiàn)問(wèn)題
JAVA面試 Spring知識(shí)點(diǎn)
JAVA面試 Mysql
JAVA面試 Redis常見(jiàn)問(wèn)題
JAVA面試 MongoDB
JAVA介紹 Linux (實(shí)戰(zhàn))常用命令
=========================================================================
??如果你對(duì)該系列文章有興趣的話,歡迎持續(xù)關(guān)注博主動(dòng)態(tài),博主會(huì)持續(xù)輸出優(yōu)質(zhì)內(nèi)容??

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-836247.html

?? 博主很需要大家的支持,你的支持是我創(chuàng)作的不竭動(dòng)力??

?

?? ~ 點(diǎn)贊收藏+關(guān)注 ~??
=========================================================================

版本記錄


  • 2023-10-18 第一版

到了這里,關(guān)于【Java系列】JDK 1.8 新特性之 Lambda表達(dá)式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java 8 新特性——Lambda 表達(dá)式(2)

    Java 8 新特性——Lambda 表達(dá)式(2)

    ????????Java Stream函數(shù)式編程接口最初在Java 8中引入,并且與 lambda 一起成為Java開(kāi)發(fā)里程碑式的功能特性,它極大的方便了開(kāi)放人員處理集合類數(shù)據(jù)的效率。 ????????Java Stream就是一個(gè)數(shù)據(jù)流經(jīng)的管道,并且在管道中對(duì)數(shù)據(jù)進(jìn)行操作,然后流入下一個(gè)管道。有學(xué)過(guò)linux

    2024年02月11日
    瀏覽(27)
  • Java 8 新特性之Lambda表達(dá)式

    函數(shù)式編程(Functional Programming)是把函數(shù)作為基本運(yùn)算單元,函數(shù)可以作為變量,可以接收函數(shù),還可以返回函數(shù)。歷史上研究函數(shù)式編程的理論是Lambda演算,所以我們經(jīng)常把支持函數(shù)式編程的編碼風(fēng)格稱為L(zhǎng)ambda表達(dá)式。 在Java中使用Lambda表達(dá)式的前提:需要是函數(shù)接口。

    2024年01月22日
    瀏覽(30)
  • Java8新特性—Lambda表達(dá)式

    Java8新特性—Lambda表達(dá)式

    Java 8是Java編程語(yǔ)言的一個(gè)版本,于2014年發(fā)布。它引入了許多新的特性和改進(jìn)。 Lambda表達(dá)式是Java 8中引入的一個(gè)重要的新特性,它提供了一種更加簡(jiǎn)潔、靈活的方式來(lái)編寫函數(shù)式接口的實(shí)現(xiàn),從而提高了代碼的可讀性和簡(jiǎn)潔性。 在本文中,我們將介紹Lambda表達(dá)式的基本語(yǔ)法、

    2024年02月03日
    瀏覽(19)
  • Java8新特性1——函數(shù)式接口&lambda表達(dá)式

    注:以下內(nèi)容基于Java 8,所有代碼都已在Java 8環(huán)境下測(cè)試通過(guò) 目錄: Java8新特性1——函數(shù)式接口lambda表達(dá)式 Java8新特性2——方法引用 Java8新特性3——Stream 如果在一個(gè)接口中, 有且只有一個(gè)抽象方法 ,則該接口被稱為函數(shù)式接口。如: 注: 可以在接口前使用 @FunctionalInt

    2024年02月10日
    瀏覽(48)
  • 【Java系列】深入解析 Lambda表達(dá)式

    【Java系列】深入解析 Lambda表達(dá)式

    ? 你只管努力,其他交給時(shí)間,時(shí)間會(huì)證明一切。 文章標(biāo)記顏色說(shuō)明: 黃色 :重要標(biāo)題 紅色 :用來(lái)標(biāo)記結(jié)論 綠色 :用來(lái)標(biāo)記一級(jí)論點(diǎn) 藍(lán)色 :用來(lái)標(biāo)記二級(jí)論點(diǎn) 希望這篇文章能讓你不僅有一定的收獲,而且可以愉快的學(xué)習(xí),如果有什么建議,都可以留言和我交流 Java La

    2024年02月10日
    瀏覽(27)
  • Java 8及以上新特性:Lambda表達(dá)式、Stream API、Optional類與接口默認(rèn)方法(四)

    目錄 一、接口默認(rèn)方法 1.1 概念解析: 1.2 應(yīng)用場(chǎng)景: 1.3 使用注意事項(xiàng): 1.4 使用示例: 二、結(jié)論 1.1 總結(jié)Java 8及以上版本四大新特性的重要意義與價(jià)值: 1.2 鼓勵(lì)讀者積極學(xué)習(xí)并運(yùn)用這些新特性: 1.3 對(duì)未來(lái)Java版本可能引入的新特性進(jìn)行展望: 1.1 概念解析: 接口默認(rèn)方法

    2024年04月13日
    瀏覽(30)
  • C++11新特性lambda 表達(dá)式

    C++11新特性lambda 表達(dá)式

    Lambda 表達(dá)式的基本語(yǔ)法是:[] (參數(shù)列表) - 返回值類型 {函數(shù)體}。 方括號(hào)([])表示捕獲列表,用來(lái)指定在 lambda 表達(dá)式中可以訪問(wèn)的外部變量。 參數(shù)列表和返回值類型與普通函數(shù)的參數(shù)列表和返回值類型相同。 函數(shù)體則是實(shí)際的代碼邏輯。 不接受任何參數(shù):[] { 函數(shù)體 } 接受

    2024年02月14日
    瀏覽(31)
  • java學(xué)習(xí)路程之篇三、進(jìn)階知識(shí)、面向?qū)ο蟾呒?jí)、接口新特性、代碼塊、內(nèi)部類、Lambda表達(dá)式、窗體、組件、事件

    概述 生成值類型響應(yīng)式數(shù)據(jù) 通過(guò) .value 值修改 生成對(duì)象和數(shù)組類型的響應(yīng)式對(duì)象選用 reactive 方式比較好 html JavaScript 概述 reactive 方法根據(jù)傳入的對(duì)象,創(chuàng)建返回一個(gè)深度響應(yīng)式對(duì)象。響應(yīng)式對(duì)象看起來(lái)和傳入的對(duì)象一樣。但是,響應(yīng)式對(duì)象屬性值改動(dòng),不管層級(jí)有多深,都

    2024年02月16日
    瀏覽(21)
  • C11新特性之Lambda表達(dá)式

    C11新特性之Lambda表達(dá)式

    優(yōu)點(diǎn):? 1.可以定義簡(jiǎn)短的函數(shù)。 2.使用lambda表達(dá)式使代碼更緊湊,可讀性更好。 語(yǔ)法: [] 表示不捕獲任何變量 [this] 表示值傳遞方式捕捉當(dāng)前的 this 指針? [] 表示引用傳遞方式捕捉所有父作用域的變量(包括 this ) [var] 表示 引用傳遞 捕捉變量 var [=] 表示值傳遞方式捕獲所

    2023年04月22日
    瀏覽(14)
  • 【C++干貨鋪】C++11新特性——lambda表達(dá)式 | 包裝器

    【C++干貨鋪】C++11新特性——lambda表達(dá)式 | 包裝器

    ========================================================================= 個(gè)人主頁(yè)點(diǎn)擊直達(dá):小白不是程序媛 C++系列專欄:C++干貨鋪 代碼倉(cāng)庫(kù):Gitee ========================================================================= 目錄 C++98中的排序 lambda表達(dá)式 lambda表達(dá)式語(yǔ)法 表達(dá)式中的各部分說(shuō)明 lambda表達(dá)式的使

    2024年01月21日
    瀏覽(47)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包