java的lambda表達(dá)式是什么?下面就一起來了解一下吧~
Lambda 表達(dá)式被熟稱為:閉包,是推動 Java 8 發(fā)布的一個(gè)新特性,使用 Lambda 表達(dá)式可以使代碼變的更加簡潔緊湊。
語法
lambda 表達(dá)式的語法格式如下:
(parameters)?->?expression或(parameters)?->{?statements;?}以下是lambda表達(dá)式的重要特征:
可選類型聲明:不需要聲明參數(shù)類型,編譯器可以統(tǒng)一識別參數(shù)值。
可選的參數(shù)圓括號:一個(gè)參數(shù)無需定義圓括號,但多個(gè)參數(shù)需要定義圓括號。
可選的大括號:如果主體包含了一個(gè)語句,就不需要使用大括號。
可選的返回關(guān)鍵字:如果主體只有一個(gè)表達(dá)式返回值則編譯器會自動返回值,大括號需要指定表達(dá)式返回了一個(gè)數(shù)值。
Lambda 表達(dá)式實(shí)例
Lambda?表達(dá)式的簡單例子: //?1.?不需要參數(shù),返回值為?5??()?->?5?? ??//?2.?接收一個(gè)參數(shù)(數(shù)字類型),返回其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?對象,并在控制臺打印,不返回任何值(看起來像是返回void)??(String?s)?->?System.out.print(s)
在 Java8Tester.java 文件輸入以下代碼:
Java8Tester.java?文件 public?class?Java8Tester?{ ???public?static?void?main(String?args[]){ ??????Java8Tester?tester?=?new?Java8Tester();???????? ??????//?類型聲明 ??????MathOperation?addition?=?(int?a,?int?b)?->?a?+?b;???????? ??????//?不用類型聲明 ??????MathOperation?subtraction?=?(a,?b)?->?a?-?b;???????? ??????//?大括號中的返回語句 ??????MathOperation?multiplication?=?(int?a,?int?b)?->?{?return?a?*?b;?};???????? ??????//?沒有大括號及返回語句 ??????MathOperation?division?=?(int?a,?int?b)?->?a?/?b;???????? ??????System.out.println("10?+?5?=?"?+?tester.operate(10,?5,?addition));??????System.out.println("10?-?5?=?"?+?tester.operate(10,?5,?subtraction));??????System.out.println("10?x?5?=?"?+?tester.operate(10,?5,?multiplication));??????System.out.println("10?/?5?=?"?+?tester.operate(10,?5,?division));???????? ??????//?不用括號 ??????GreetingService?greetService1?=?message?->??????System.out.println("Hello?"?+?message);???????? ??????//?用括號 ??????GreetingService?greetService2?=?(message)?->??????System.out.println("Hello?"?+?message);???????? ??????greetService1.sayMessage("Runoob");??????greetService2.sayMessage("Google");???} ???? ???interface?MathOperation?{ ??????int?operation(int?a,?int?b);???} ???? ???interface?GreetingService?{ ??????void?sayMessage(String?message);???} ???? ???private?int?operate(int?a,?int?b,?MathOperation?mathOperation){ ??????return?mathOperation.operation(a,?b);???}}
執(zhí)行以上腳本,輸出結(jié)果為:
$?javac?Java8Tester.java $?java?Java8Tester10?+?5?=?1510?-?5?=?510?x?5?=?5010?/?5?=?2Hello?RunoobHello?Google
使用 Lambda 表達(dá)式需要注意以下兩點(diǎn):
Lambda 表達(dá)式主要用來定義行內(nèi)執(zhí)行的方法類型接口,例如,一個(gè)簡單方法接口。在上面例子中,我們使用各種類型的Lambda表達(dá)式來定義MathOperation接口的方法。然后我們定義了sayMessage的執(zhí)行。
Lambda 表達(dá)式免去了使用匿名方法的麻煩,并且給予Java簡單但是強(qiáng)大的函數(shù)化的編程能力。
以上就是小編今天的分享了,希望可以幫助到大家。