欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中Lambda表達(dá)式基礎(chǔ)及使用

 更新時(shí)間:2021年08月25日 17:16:03   作者:季沐測(cè)試筆記  
這篇文章主要介紹了Lambda 是JDK 8 的重要新特性。它允許把函數(shù)作為一個(gè)方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中),使用 Lambda 表達(dá)式可以使代碼變的更加簡(jiǎn)潔緊湊,使Java代碼更加優(yōu)雅,感興趣的小伙伴一起來(lái)學(xué)習(xí)吧

標(biāo)準(zhǔn)格式:

三要素:形式參數(shù) 箭頭 代碼塊
格式:(形式參數(shù))->{代碼塊}
形式參數(shù):如果多個(gè)參數(shù)用逗號(hào)隔開,無(wú)參留空
->:英文中劃線和大于號(hào)組成
代碼塊:具體要做的事

使用前提:

有一個(gè)接口
接口中有且僅有一個(gè)抽象方法

一、舉例說(shuō)明

1、無(wú)參無(wú)返回

1.1 定義一個(gè)接口

public interface Eatable {
    void eat();
}

1.2接口實(shí)現(xiàn)類

public class EatableImpl implements Eatable{
    @Override
    public void eat() {
        System.out.println("一天一蘋果");
    }
}

1.3 測(cè)試類

public class EatableDemo {
    public static void main(String[] args) {
        //主方法調(diào)用useEatable
        Eatable e = new EatableImpl();
        useEatable(e);
        //匿名內(nèi)部類
        useEatable(new Eatable() {
            @Override
            public void eat() {
                System.out.println("一天一蘋果");
            }
        });

        //lambda表達(dá)式
        useEatable(() -> {
            System.out.println("一天一蘋果");
        });

 

    }

    private static void useEatable(Eatable e){
        e.eat();
    }
}

2、有參無(wú)返回代碼示例

public interface Eatable {
    void eat(String name);
}

public class EatDemo {
    public static void main(String[] args) {
        useEat((String name) -> {
            System.out.println(name);
            System.out.println("輸出的啥");
        });
    }

    private static void useEat(Eatable e){
        e.eat("蘋果");
    }

}

3、有參有返回

public interface Addable {
    int add(int x,int y);
}
1.
2.
3.
public class AddableDemo {
    public static void main(String[] args) {
        useAddable( (int x,int y ) -> {
            return x+y;
        });
    }

    private static void useAddable(Addable a){
        int sum = a.add(5, 7);
        System.out.println(sum);
    }

}

二、簡(jiǎn)單事項(xiàng)

1、省略模式

  • 參數(shù)的類型可省略,多個(gè)參數(shù)時(shí)候不可只省略一個(gè);
  • 如果參數(shù)有且僅有一個(gè)可省略大括號(hào)和分號(hào);
  • 如果代碼塊的語(yǔ)句只有一條,可省略大括號(hào)和分號(hào)(有return時(shí)return也省略掉)

2、注意事項(xiàng)

  • 必須要有接口,接口中有且僅有一個(gè)抽象方法
  • 必須有上下文環(huán)境,才能推導(dǎo)出Lambda對(duì)應(yīng)的接口:局部變量的賦值、調(diào)用方法的參數(shù)

三、Lambda表達(dá)式和匿名內(nèi)部類的區(qū)別

1、所需類型不同:

  • 匿名內(nèi)部類:可以是接口,也可以是抽象類,還可以是具體類
  • Lambda表達(dá)式:只能是接口

2、使用限制不同:

  • 如果接口中有且僅有一個(gè)抽象類,兩者都可以使用
  • 接口中多于一個(gè)抽象類,只能使用匿名內(nèi)部類

3、實(shí)現(xiàn)原理不同:

  • 匿名內(nèi)部類:編譯之后,產(chǎn)生一個(gè)單獨(dú)的.class字節(jié)碼文件
  • Lambda表達(dá)式:編譯之后,沒(méi)有單獨(dú)的.class字節(jié)碼文件,對(duì)應(yīng)的字節(jié)碼會(huì)在運(yùn)行時(shí)動(dòng)態(tài)的生成

到此這篇關(guān)于Java中Lambda表達(dá)式基礎(chǔ)及使用的文章就介紹到這了,更多相關(guān)Java中Lambda表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Reference源碼解析

    Java Reference源碼解析

    這篇文章主要為大家詳細(xì)解析了Java Reference源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Java數(shù)據(jù)結(jié)構(gòu)優(yōu)先隊(duì)列實(shí)練

    Java數(shù)據(jù)結(jié)構(gòu)優(yōu)先隊(duì)列實(shí)練

    通常都把隊(duì)列比喻成排隊(duì)買東西,大家都很守秩序,先排隊(duì)的人就先買東西。但是優(yōu)先隊(duì)列有所不同,它不遵循先進(jìn)先出的規(guī)則,而是根據(jù)隊(duì)列中元素的優(yōu)先權(quán),優(yōu)先權(quán)最大的先被取出,這篇文章主要介紹了java優(yōu)先隊(duì)列的真題,感興趣的朋友一起看看吧
    2022-07-07
  • Java操作透明圖片并保持背景透明的實(shí)現(xiàn)

    Java操作透明圖片并保持背景透明的實(shí)現(xiàn)

    這篇文章主要介紹了Java操作透明圖片并保持背景透明的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 最新評(píng)論