亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Lambda表達(dá)式在Java編程中的應(yīng)用

        2019-03-25 08:21:24任憲臻
        中國(guó)科技縱橫 2019年3期
        關(guān)鍵詞:表達(dá)式

        任憲臻

        摘 要:Lambda表達(dá)式是Java 8發(fā)布的最重要的新特性。在Java編程中,可以應(yīng)用Lambda表達(dá)式替換匿名內(nèi)部類,而且使用Lambda表達(dá)式可以使編寫(xiě)的Java代碼看起來(lái)更加簡(jiǎn)短,使用起來(lái)也更加方便。應(yīng)用Lambda表達(dá)式進(jìn)行編程及應(yīng)用Lambda表達(dá)式的場(chǎng)合是本文講述的重點(diǎn)。

        關(guān)鍵詞:Lambda;表達(dá)式;函數(shù)式接口;匿名方法

        中圖分類號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-2064(2019)03-0014-02

        雖然Lambda表達(dá)式是JDK1.8引入的最重要的新增功能,但是其實(shí)在很多編程語(yǔ)言中都引入了Lambda表達(dá)式。其實(shí)簡(jiǎn)單來(lái)說(shuō),Lambda 表達(dá)式就是一個(gè)匿名方法,但是它又跟匿名方法不太一樣。Lambda表達(dá)式在應(yīng)用的時(shí)候,首先需要定義一個(gè)函數(shù)式接口。函數(shù)式接口也是JDK1.8中的新概念,它只允許有且僅有一個(gè)抽象方法,但是在函數(shù)式接口中,可以包含多個(gè)非抽象方法。

        1 Lambda表達(dá)式的使用

        Lambda表達(dá)式通常用表示如下:

        (參數(shù)列表)->表達(dá)式,或者(參數(shù)列表)->{語(yǔ)句行;}

        圖1所示的例子展示了Lambda表達(dá)式的應(yīng)用。從這個(gè)例子中,我們可以總結(jié)出在使用lambda表達(dá)式時(shí)要注意以下幾點(diǎn):

        (1)在Lambda表達(dá)式中,編譯器可以識(shí)別參數(shù)值類型,所以可以聲明參數(shù)類型,也可以不聲明。

        (2)如果Lambda表達(dá)式只有一個(gè)參數(shù),那么可以不必使用圓括號(hào),但是如果有兩個(gè)或兩個(gè)以上的參數(shù),必須把參數(shù)放到圓括號(hào)中,并且參數(shù)之間都用逗號(hào)間隔。

        (3)如果Lambda表達(dá)式的主體部分只有一個(gè)語(yǔ)句,那么可以不需要使用大括號(hào),但是如果有多個(gè)語(yǔ)句,則必須把所有語(yǔ)句放在大括號(hào)中。

        (4)如果Lambda表達(dá)式只有一條語(yǔ)句返回值,那么可以省略return關(guān)鍵字,但是有多條語(yǔ)句并且有返回值,那么必須使用return關(guān)鍵字來(lái)返回值。

        Lambda表達(dá)式主要用來(lái)定義類內(nèi)執(zhí)行的方法類型接口,所以在上面圖1所示的例子中,我們使用各種類型的Lambda表達(dá)式來(lái)定義Arithmetic接口的方法。而且Lambda 表達(dá)式免去了使用匿名方法的麻煩,并且給予Java簡(jiǎn)單但是強(qiáng)大的函數(shù)化的編程能力。

        2 變量的引用

        2.1 訪問(wèn)外層作用域定義的局部變量

        lambda表達(dá)式可以訪問(wèn)外層作用域定義的局部變量,而且必須是經(jīng)初始化的局部變量,但是它不能修改外層局部變量的值。即:lambda表達(dá)式的局部變量可以不用聲明為final,但是具有隱性final的語(yǔ)義,所以變量值不能被修改,否則會(huì)報(bào)編譯錯(cuò)誤。因此,未初始化的外層局部變量不能被lambda表達(dá)式訪問(wèn),也不能在lambda塊內(nèi)對(duì)其初始化。

        因此,從圖2例子中我們可以看出,使用Lambda表達(dá)式外層作用域定義的局部變量時(shí),雖然該局部變量沒(méi)有被顯式聲明修飾符為final,但是在Lambda表達(dá)式中訪問(wèn)此局部變量時(shí),該變量自動(dòng)會(huì)具有final的語(yǔ)義,這是編譯器的需求,也就是說(shuō)如果在Lambda表達(dá)式中訪問(wèn)的局部變量,如果不是final類型的話,編譯器自動(dòng)加上final修飾符。

        2.2 獲取或者更改外層類的屬性

        lambda表達(dá)式內(nèi)可以通過(guò)this關(guān)鍵字(或不使用)訪問(wèn)或修改類的屬性。但是如果外層類的屬性是final標(biāo)識(shí)的,則lambda內(nèi)只能訪問(wèn),不可以修改。而如果外層類的屬性是static標(biāo)識(shí)的,則仍然可以訪問(wèn)和多次修改。如圖3例子所示。

        上面我們講述了Lambda表達(dá)式的普遍用法,而實(shí)際上在Java編程中,Lambda表達(dá)式可以使用了最少的代碼量,實(shí)現(xiàn)了同樣的功能。圖4是使用匿名函數(shù)創(chuàng)建一個(gè)線程,而圖5是使用Lambda表達(dá)式實(shí)現(xiàn)的同樣功能的代碼,從這兩個(gè)例子中我們可以看到,應(yīng)用Lambda表達(dá)式進(jìn)行編程,可以讓代碼變得更加簡(jiǎn)潔、緊湊,很大程度上提升了Java的語(yǔ)言表達(dá)能力。

        在Java程序中,使用Lambda表達(dá)式的好處就是極大地簡(jiǎn)化了代碼,縮減了代碼量,而且使程序邏輯也更加清晰明了。Lambda表達(dá)式一般適合于沒(méi)有復(fù)雜邏輯或者無(wú)副作用的純函數(shù)場(chǎng)景下,但是有的Lambda表達(dá)式會(huì)降低程序的可讀性,雖然代碼最大程度上簡(jiǎn)潔緊湊,但是產(chǎn)生的副作用就是有時(shí)候會(huì)使代碼變得晦澀難懂。因此,雖然Lambda表達(dá)式最吸引人的地方是簡(jiǎn)潔,但是在有多層函數(shù)嵌套的情況下,Lambda表達(dá)式的簡(jiǎn)潔性并沒(méi)有很大的提升,反而影響了函數(shù)的作用范圍的識(shí)別度,這種情況下不建議使用Lambda表達(dá)式。

        猜你喜歡
        表達(dá)式
        漢韓空間關(guān)系表達(dá)式差別的概念化原因
        既有建筑結(jié)構(gòu)鑒定表達(dá)式各分項(xiàng)系數(shù)的確定分析
        靈活選用二次函數(shù)表達(dá)式
        一個(gè)混合核Hilbert型積分不等式及其算子范數(shù)表達(dá)式
        表達(dá)式轉(zhuǎn)換及求值探析
        靈活選用二次函數(shù)表達(dá)式
        淺析C語(yǔ)言運(yùn)算符及表達(dá)式的教學(xué)誤區(qū)
        注意糾正百分率表達(dá)式錯(cuò)誤
        議C語(yǔ)言中循環(huán)語(yǔ)句
        商(2012年11期)2012-07-09 19:07:55
        事件語(yǔ)義學(xué)與動(dòng)詞語(yǔ)義表達(dá)式
        白浆出来无码视频在线| 国产欧美性成人精品午夜| 99精品国产一区二区三区| 日韩激情小视频| 天堂视频一区二区免费在线观看| 午夜福利视频一区二区二区| 久久久www成人免费毛片| 亚洲熟女少妇一区二区| 国产成人精品视频网站| 尤物精品国产亚洲亚洲av麻豆| 97人人模人人爽人人喊网| 男女性高爱潮免费观看| 成人无码激情视频在线观看| 国产亚洲精品一品二品| 欧美成人精品a∨在线观看 | 五月天欧美精品在线观看| 国内自拍偷拍一区二区| 女女同恋一区二区在线观看| 国产97在线 | 亚洲| 无码精品一区二区三区超碰| 久久av少妇亚洲精品| 又黄又爽又色视频| 国产精品视频二区不卡| 国产精品无码mv在线观看| 福利利视频在线观看免费| 中文字幕久久熟女蜜桃| 国产一区a| 人妖系列在线免费观看| 久久影院午夜理论片无码| 236宅宅理论片免费| 久久久久亚洲AV无码专区一区| 亚洲av少妇高潮喷水在线| 久久不见久久见中文字幕免费| 国产剧情福利AV一区二区| 国产三级视频在线观看国产| 热99re久久精品这里都是精品免费 | 亚洲av区一区二区三区| 日韩欧美aⅴ综合网站发布| 欧美性猛交xxxx黑人| 国产亚洲亚洲精品视频| 精品含羞草免费视频观看|