java的lambda表達式是什么?下面就一起來了解一下吧~
Lambda 表達式被熟稱為:閉包,是推動 Java 8 發布的一個新特性,使用 Lambda 表達式可以使代碼變的更加簡潔緊湊。
語法
lambda 表達式的語法格式如下:
(parameters)?->?expression或(parameters)?->{?statements;?}以下是lambda表達式的重要特征:
可選類型聲明:不需要聲明參數類型,編譯器可以統一識別參數值。
可選的參數圓括號:一個參數無需定義圓括號,但多個參數需要定義圓括號。
可選的大括號:如果主體包含了一個語句,就不需要使用大括號。
可選的返回關鍵字:如果主體只有一個表達式返回值則編譯器會自動返回值,大括號需要指定表達式返回了一個數值。
Lambda 表達式實例
Lambda?表達式的簡單例子: //?1.?不需要參數,返回值為?5??()?->?5?? ??//?2.?接收一個參數(數字類型),返回其2倍的值??x?->?2?*?x?? ?? //?3.?接受2個參數(數字),并返回他們的差值??(x,?y)?->?x?–?y?? ?? //?4.?接收2個int型整數,返回他們的和??(int?x,?int?y)?->?x?+?y?? ?? //?5.?接受一個?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);???}}
執行以上腳本,輸出結果為:
$?javac?Java8Tester.java $?java?Java8Tester10?+?5?=?1510?-?5?=?510?x?5?=?5010?/?5?=?2Hello?RunoobHello?Google
使用 Lambda 表達式需要注意以下兩點:
Lambda 表達式主要用來定義行內執行的方法類型接口,例如,一個簡單方法接口。在上面例子中,我們使用各種類型的Lambda表達式來定義MathOperation接口的方法。然后我們定義了sayMessage的執行。
Lambda 表達式免去了使用匿名方法的麻煩,并且給予Java簡單但是強大的函數化的編程能力。
以上就是小編今天的分享了,希望可以幫助到大家。