溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Java中Lambda函數(shù)的語(yǔ)法結(jié)構(gòu)

發(fā)布時(shí)間:2020-06-05 21:22:07 來(lái)源:億速云 閱讀:390 作者:Leah 欄目:編程語(yǔ)言

今天小編給大家分享的是Java中Lambda函數(shù)語(yǔ)法結(jié)構(gòu)的詳細(xì)介紹,相信大部分人都不太了解Lambda函數(shù)的語(yǔ)法結(jié)構(gòu),閱讀完整文相信大家對(duì)Lambda函數(shù)的語(yǔ)法結(jié)構(gòu)有了一定的認(rèn)識(shí)。

Java中Lambda函數(shù)的語(yǔ)法結(jié)構(gòu)


1、Lambda的函數(shù)的語(yǔ)法結(jié)構(gòu):

 

(variable)->action
  

2、語(yǔ)法結(jié)構(gòu)成分解析:

 

(1)variable:方法的變量名稱(chēng),可以有多個(gè)變量,如果只有一個(gè)變量,可以將小括號(hào)省略。
  

(2)action:是方法體,是自己寫(xiě)的代碼邏輯的部分??梢允且恍写a或者多行代碼,如果只有一行代碼,可以不要花括號(hào),如果是多行代碼,需要用花括號(hào)括起來(lái)。

 

(3)-> :這個(gè)符號(hào)用于將變量和方法體分割開(kāi)來(lái)。
  

(4)代碼示例:

 

public class Demo1 {
  

//沒(méi)有參數(shù)的運(yùn)算
  

interface NoParamOperation {
  

double operation();
  

}
  

//一個(gè)參數(shù)的運(yùn)算
  

interface SingleParamOperation {
  

int operation(int a);
  

}
  

//兩個(gè)參數(shù)的運(yùn)算
  

interface MathOperation {
  

double operation(double a, double b);
  

}
  

public static void main(String[] args) {
  

//======幾種Lambda表達(dá)式的寫(xiě)法=============
  

//得到PI值(沒(méi)有參數(shù),直接返回)
  

NoParamOperation pi = () -> Math.PI;
  

//得到自然常數(shù) (沒(méi)有參數(shù),直接返回,如果有花括號(hào),要寫(xiě)上顯式的加上return)
  

NoParamOperation e = () -> {
  

return Math.E;
  

};
  

//求平方(如果參數(shù)是一個(gè),可以省略小括號(hào))
  

SingleParamOperation square = a -> a * a;
  

//求立方(可以指定參數(shù)的類(lèi)型,如果沒(méi)有編譯器會(huì)自動(dòng)推算)
  

SingleParamOperation cubic = (int a) -> a * a * a;
  

//加法(如果多個(gè)參數(shù),就必須添加上小括號(hào))
  

MathOperation add = (double a, double b) -> a + b;
  

//減法(多個(gè)參數(shù),也可以不指定參數(shù)的數(shù)據(jù)類(lèi)型)
  

MathOperation sub = (a, b) -> a - b;
  

//乘法(一行代碼,函數(shù)體上也可以寫(xiě)上花括號(hào))
  

MathOperation mult = (double a, double b) -> {
  

return a * b;
  

};
  

//除法(如果函數(shù)體有多行,就必須有花括號(hào))
  

MathOperation div = (a, b) -> {
  

if (b != 0) {
  

return a / b;
  

} else {
  

return 0;
  

}
  

};
  

System.out.println("PI的值" + pi.operation());
  

System.out.println("自然常數(shù)E的值:" + e.operation());
  

System.out.println("10的平方:" + square.operation(10));
  

System.out.println("10的立方:" + cubic.operation(10));
  

System.out.println("20+10:" + add.operation(20, 10));
  

System.out.println("20-10:" + sub.operation(20, 10));
  

System.out.println("20*10:" + mult.operation(20, 10));
  

System.out.println("20/10:" + div.operation(20, 10));
  

}
  

}

 

3、Lambda函數(shù)的簡(jiǎn)化表示:
  

方法引用是Lambda表達(dá)式的一種簡(jiǎn)寫(xiě),格式為:ObjectRef::methodName。有三種方法引用類(lèi)型,分別是靜態(tài)方法引用、實(shí)例方法引用、構(gòu)造方法引用。
  

(1)ObjectRef可以是類(lèi)名、實(shí)例名。
  

2):: 符號(hào)是方法引用符號(hào)。
  

(3)#methodName 是引用的方法名。

 

如果你能讀到這里,恭喜你已經(jīng)對(duì)Lambda函數(shù)的語(yǔ)法結(jié)構(gòu)有了從實(shí)踐層面最深刻的體會(huì)了。如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI