NodeJS有難度的面試題(能答對幾個)
阿新 • • 發佈:2020-11-18
lambda是什麼:
- lambda是Java8的重要新特徵,使用 Lambda 表示式可以使程式碼變的更加簡潔緊湊,同時lambda 允許把函式作為一個方法的引數(函式作為引數傳遞進方法中)。
- 相較於Java7匿名內部類,lambda不僅僅是語法糖而已,經反編譯後可知:匿名內部類會建立一個內部類物件,而lambda表示式會被封裝為主類的私有方法。
- lambda表示式會省略方法名或省略方法名與介面名(僅能取代函式介面:一個有且僅有一個抽象方法,但是可以有多個非抽象方法的介面。),即:
//此處省略Runable介面與run方法名稱
new Thread( () -> { System.out.print("Hello"); } ).start();
語法特徵:
- (parameters) -> expression 或 (parameters) ->{ statements; }
- 以下是lambda表示式的重要特徵:
- 可選型別宣告:不需要宣告引數型別,編譯器可以統一識別引數值。
- 可選的引數圓括號:一個引數無需定義圓括號,但多個引數需要定義圓括號。
- 可選的大括號:如果主體包含了一個語句,就不需要使用大括號。
- 可選的返回關鍵字:如果主體只有一個表示式返回值則編譯器會自動返回值,大括號需要指定明表示式返回了一個數值,即:
Function f1=(a)-> a.toString(); //或 Function f1=(a)-> {return a.toString();};
-
類名::方法名
注意是方法名哦,後面沒有括號“()”。為啥不要括號,因為這樣的是式子並不代表一定會呼叫這個方法。這種式子一般是用作Lambda表示式,Lambda有所謂懶載入嘛,不要括號就是說,看情況呼叫方法。
參考:
https://www.runoob.com/java/java8-functional-interfaces.html
https://objcoding.com/2019/03/04/lambda/
https://blog.csdn.net/lsmsrc/article/details/41747159
後續:lambda與Collections、stream(待整理)