国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Lambda表達式在Java編程中的應用

2019-03-25 08:21任憲臻
中國科技縱橫 2019年3期
關鍵詞:表達式

任憲臻

摘 要:Lambda表達式是Java 8發(fā)布的最重要的新特性。在Java編程中,可以應用Lambda表達式替換匿名內部類,而且使用Lambda表達式可以使編寫的Java代碼看起來更加簡短,使用起來也更加方便。應用Lambda表達式進行編程及應用Lambda表達式的場合是本文講述的重點。

關鍵詞:Lambda;表達式;函數式接口;匿名方法

中圖分類號:TP312 文獻標識碼:A 文章編號:1671-2064(2019)03-0014-02

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

1 Lambda表達式的使用

Lambda表達式通常用表示如下:

(參數列表)->表達式,或者(參數列表)->{語句行;}

圖1所示的例子展示了Lambda表達式的應用。從這個例子中,我們可以總結出在使用lambda表達式時要注意以下幾點:

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

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

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

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

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

2 變量的引用

2.1 訪問外層作用域定義的局部變量

lambda表達式可以訪問外層作用域定義的局部變量,而且必須是經初始化的局部變量,但是它不能修改外層局部變量的值。即:lambda表達式的局部變量可以不用聲明為final,但是具有隱性final的語義,所以變量值不能被修改,否則會報編譯錯誤。因此,未初始化的外層局部變量不能被lambda表達式訪問,也不能在lambda塊內對其初始化。

因此,從圖2例子中我們可以看出,使用Lambda表達式外層作用域定義的局部變量時,雖然該局部變量沒有被顯式聲明修飾符為final,但是在Lambda表達式中訪問此局部變量時,該變量自動會具有final的語義,這是編譯器的需求,也就是說如果在Lambda表達式中訪問的局部變量,如果不是final類型的話,編譯器自動加上final修飾符。

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

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

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

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

猜你喜歡
表達式
漢韓空間關系表達式差別的概念化原因
靈活選用二次函數表達式
一個混合核Hilbert型積分不等式及其算子范數表達式
表達式轉換及求值探析
靈活選用二次函數表達式
淺析C語言運算符及表達式的教學誤區(qū)
注意糾正百分率表達式錯誤
事件語義學與動詞語義表達式
含二絕熱過程和二同類多方過程的循環(huán)效率的簡潔表達式
實驗結果表達式物理內涵探討