最代碼廣告位
fengzf的gravatar頭像
fengzf2019-12-02 11:49:59
Java 8新特性——Lambda表達式

Lambda允許把函數作為一個方法的參數使用,由編譯器推斷并轉換為常規的代碼,實現同樣的功能代碼更簡潔。

語法:

         (parameters) -> expression

         (parameters) -> { statements;}

重要特征:

         1、不需要聲明參數類型,編譯器可以統一識別參數值

         例如:()->5  不需要參數,返回值5

          (x,y) -> x - y  沒有聲明參數類型,返回x - y的差值

         2、當有一個參數時無需定義括號,當有兩個參數時必須定義括號

         例如:x -> 2 * x   一個參數,不用定義括號

               (x,y) -> x - y  兩個參數,必須有括號

         3、主體包含一個語句,就不需要大括號

         4、如果主體只有一個表達式返回值則編譯器會自動返回值

public class Java8LambdaDemo {

     public static void main(String args[]) {
         Java8LambdaDemo java8LambdaDemo = new Java8LambdaDemo();
        //類型聲明
         Calculator addtion = (int a,int b) ->a+b;
         //不用類型聲明
         Calculator subtraction = (a,b) -> a-b;
         //大括號的返回語句
         Calculator multiplication = (int a,int b) -> {return a*b; };
         //沒有大括號的返回語句
         Calculator division = (int a,int b) -> a/b;

         System.out.println("100+50="+java8LambdaDemo.operate(100,50,addtion));
         System.out.println("100-50="+java8LambdaDemo.operate(100,50,subtraction));
         System.out.println("100*50="+java8LambdaDemo.operate(100,50,multiplication));
         System.out.println("100/50="+java8LambdaDemo.operate(100,50,division));
      }

    /**
     * 算數運算接口
     */
    interface  Calculator{
         int  calculate(int a,int b);
    }

    /**
     *操作方法
     */
    private int operate(int a,int b,Calculator calculator){
        return calculator.calculate(a,b);
    }
}

Java 8新特性——Lambda表達式Java 8新特性——Lambda表達式測試結果:

Java 8新特性——Lambda表達式作用域:可以在直接在Lambda表達式中訪問外層的局部變量,但表達式內層不能修改定義在表達式外的局部變量,否則會有編譯錯誤。lambda表達式內的局部變量不允許與外部變量重名。

public class Java8LambdaScopeDemo {
     public static void main(String args[]) {
         final String salutation = "hello ";
         String myName = "I am Lambda ~";
         String today = "2019/12/02";
         SayHello greetingService = message -> {
             System.out.println(salutation + message + myName);
             //此處修改today出現變異錯誤
             //today = "2019/12/03";
             //此處定義的局部變量會出現編譯錯誤
             //String myName = "Java";
         };

         greetingService.say("World ! ");
      }
     interface SayHello{
         /**
          * 打招呼方法
          * @param message
          */
         void say(String message);

     }
}

Java 8新特性——Lambda表達式Java 8新特性——Lambda表達式

 


打賞
最近瀏覽
沙特小王子 LV81月17日
月亮月亮
shaoyu0215 LV11月17日
星星
沙漠魚 LV121月17日
月亮月亮月亮
fengyumeluo LV111月16日
月亮月亮星星星星星星
sky丶小十 LV41月16日
月亮
397312607 LV21月15日
星星星星
心印語 LV91月15日
月亮月亮星星
wangyu2019 LV111月14日
月亮月亮星星星星星星
最代碼故戌 LV201月14日
太陽月亮
maojianyun LV301月12日
太陽月亮月亮月亮星星星星
頂部客服微信二維碼底部
>掃描二維碼關注最代碼為好友掃描二維碼關注最代碼為好友
2008大乐透走势图