開心生活站

位置:首頁 > IT科技 > 

java,lambda

IT科技2.91W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

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簡單但是強大的函數化的編程能力。

java lambda

標籤:lambda java