1. 程式人生 > 實用技巧 >分塊 (區間加,區間乘,單點查詢

分塊 (區間加,區間乘,單點查詢

Lambda 表示式,也可稱為閉包,它是推動 Java 8 釋出的最重要新特性。

Lambda 允許把函式作為一個方法的引數(函式作為引數傳遞進方法中)。

使用 Lambda 表示式可以使程式碼變的更加簡潔緊湊。

語法

lambda 表示式的語法格式如下:

(parameters) -> expression
或
(parameters) ->{ statements; }

特徵

以下是lambda表示式的重要特徵:

  • 可選型別宣告:不需要宣告引數型別,編譯器可以統一識別引數值。
  • 可選的引數圓括號:一個引數無需定義圓括號,但多個引數需要定義圓括號。
  • 可選的大括號:如果主體包含了一個語句,就不需要使用大括號。
  • 可選的返回關鍵字:如果主體只有一個表示式返回值則編譯器會自動返回值,大括號需要指定明表示式返回了一個數值。

示例

 1 package com.java.demo;
 2 
 3 public class LambdaDemo {
 4     public static void main(String[] args) {
 5         print(new MyMath() {
 6             @Override
 7             public int sum(int x, int y) {
 8                 return x+y;
9 } 10 },100,200); 11 12 print((int x,int y) -> { 13 return x+y; 14 },100,200); 15 } 16 17 public static void print(MyMath m,int x,int y){ 18 int num = m.sum(x,y); 19 System.out.println(num); 20 } 21 22 static interface MyMath{
23 int sum(int x,int y); 24 } 25 }

基本使用步驟:

  1. 定義一個僅含抽象方法的函式式介面
  2. 宣告一個該介面的變數來實現對抽象方法的lambda表示式實現形式(此步驟可以壓縮到下一步中)
  3. 使用一個呼叫該介面型別的變數的方法,傳入已經第二步中的介面變數(也可以直接傳入lambda表示式)

個人目前的理解是,lambda表示式只能操作那些只有一個抽象類的介面,可以把它理解為一個匿名內部類,實際上lambda表示式的效果與匿名內部類的效果等同。