H1 函式式程式設計 Lambda表示式

2021-10-07 12:48:54 字數 2483 閱讀 3710

函式式程式設計思想概述

public

class

demo05_lambda})

.start()

;//使用lambda表示式,實現多執行緒

newthread((

)->).

start()

;}}

lambda表示式的標準格式:

lambda的使用前提

使用lambda必須具有介面,且要求介面中有且僅有乙個抽象方法

無論是jdk內建的runnable、comparator介面還是自定義的介面,只有當介面中的抽象方法存在且唯一時,才可以使用lambda

備註:有且僅有乙個抽象方法的介面,稱為「函式式介面」

使用lambda必須具有上下文推斷

方法的引數或區域性變數型別必須為lambda對應的介面型別,才能使用lambda作為該介面的例項

lambda的無參無返回例項:

/*

需求:給定乙個廚子cook介面,內含唯一的抽象方法makefood,且無引數,無返回值

使用lambda的標準格式呼叫invokecook方法,列印輸出"吃飯啦!"

()->{}

*///1 給定乙個廚子cook介面,內含唯一的抽象方法makefood,且無引數,無返回值

public

inte***ce

cook

public

class

demo06_cook);

}//2 定義乙個方法,引數傳遞cook介面,方法內部呼叫cook介面中的方法makefood

public

static

void

invokecook

(cook cook)

}

lambda的有參有返回例項:

—— 例項1 ——

/* lambda表示式有引數有返回值的練習

需求:使用陣列儲存多個person物件

對陣列中的person物件使用arrays的sort方法通過年齡進行公升序排序

*/public

class

demo07_arrays

;//對陣列中的person物件使用arrays的sort方法通過年齡進行公升序排序(前 - 後)

/* arrays.sort(arr, new comparator()

});*///使用lambda表示式簡化匿名內部類

arrays.

sort

(arr,

(person o1, person o2)

->);

//遍歷陣列

for(person p : arr)}}

—— 例項2 ——

// 需求:給定乙個計算器的calculator介面,內含抽象方法calc可以將兩個int數字相加得到和值

public

inte***ce

calculator

/* 需求:

給定乙個計算器的calculator介面,內含抽象方法calc可以將兩個int數字相加得到和值

使用lambda的標準格式呼叫invokecalc方法,完成120和130的相加

*/public

class

demo08_invokecalc})

;//使用lambda的標準格式呼叫invokecalc方法

invokecalc

(120

,130,(

int a,

int b)

->);

}private

static

void

invokecalc

(int a,

int b,calculator calculator)

}

lambda省略格式

之前的例項**省略:

//使用lambda省略的表示式

//1

newthread((

)-> system.out.

println

(thread.

currentthread()

.getname()

+"新執行緒建立了"))

.start()

;//thread-2新執行緒建立了

//2invokecook((

)->system.out.

println

("吃飯啦!"))

;//吃飯啦!

//3arrays.

sort

(arr,

(o1,o2)

->o1.

getage()

-o2.

getage()

);//4invokecalc

(120

,130

,(a,b)

-> a+b)

;//結果是:250

函式式程式設計 Lambda表示式

1。不包含引數 runnable runnable system.out.println helloworld 只包含乙個引數 actionlistener actionlistener event system.out.println click 主體可以是一段 runnable runnable...

函式式程式設計 lambda表示式

1.定義 是一種匿名方法。2.作用 作為引數傳遞時語法簡潔,優雅,可讀性強。隨時建立和銷毀,減少程式耦合度。3.語法 定義 變數 lambda 形參 方法體 呼叫 變數 實參 4.說明 形參沒有可以不填 方法體只能有一條語句,且不支援賦值語句。lambda 匿名函式 語法 lambda 引數 函式體...

函式式程式設計思想 Lambda表示式

lambda是jdk1.8之後的新特性,傳統的程式設計思想是物件導向的,即想呼叫乙個方法時,需要建立乙個物件,再呼叫這個物件中的方法。而函式式程式設計只要結果正確,而不在意物件是誰,方法名是誰。物件導向的程式設計會產生大量的冗餘 實現類物件,重寫方法等 而且這些冗餘 是必要的。而函式式程式設計思想,...