1、為什么使用Lambda表達(dá)式
- Lambda是一個(gè) 匿名函數(shù),我們可以把Lambda表達(dá)式理解為是 一段可以傳遞的代碼(將代碼像數(shù)據(jù)一樣進(jìn)行傳遞)。使用它可以寫出更簡(jiǎn)潔、更靈活的代碼。作為一種更緊湊的代碼風(fēng)格,是Java的語(yǔ)言表達(dá)式能力得到了提升。
package com.lambda; import org.junit.Test; import java.util.Comparator; public class LambdaTest { @Test public void test1() { // Runnable runnable = new Runnable() { // @Override // public void run() { // System.out.println("Lambda表達(dá)式"); // } // }; // // Thread thread = new Thread(runnable); // thread.start(); // Runnable runnable = () -> System.out.println("Lambda表達(dá)式"); // // new Thread(runnable).start(); // new Thread(new Runnable() { // @Override // public void run() { // System.out.println("Lambda表達(dá)式"); // } // }).start(); new Thread(() -> System.out.println("Lambda表達(dá)式")).start(); } @Test public void test2() { // Comparator<Integer> com1 = new Comparator<>() { // @Override // public int compare(Integer o1, Integer o2) { // return Integer.compare(o1, o2); // } // }; // // int compare = com1.compare(12, 21); // System.out.println(compare);//-1 Comparator<Integer> com2 = (o1, o2) -> Integer.compare(o1, o2); int compare = com2.compare(12, 21); System.out.println(compare);//-1 } }
2、Lambda表達(dá)式:語(yǔ)法
- 在Java8語(yǔ)言中引入的一種新的語(yǔ)法元素和操作符。這個(gè)操作符為? “ ->? ” ,該操作符被稱為? Lambda操作符? 或? 箭頭操作符 。
- 左側(cè):指定了Lambda表達(dá)式需要的 參數(shù)列表?,(其實(shí)就是接口中的抽象方法的形參列表)
- 右側(cè):制定了 Lambda體 ,是抽象方法的實(shí)現(xiàn)邏輯,也即Lambda表達(dá)式要執(zhí)行的功能,(其實(shí)就是重寫的抽象方法的方法體)?
3、Lambda表達(dá)式的使用(分為6種情況介紹)?
3.1、Lambda接口中的抽象方法無(wú)參,無(wú)返回值
@Test public void test1() { new Thread(() -> System.out.println("Lambda表達(dá)式")).start(); }
3.2、Lambda需要一個(gè)參數(shù),但是沒(méi)有返回值
@Test public void test2() { // new Consumer<String>() { // @Override // public void accept(String s) { // System.out.println(s); // } // }.accept("Lambda表達(dá)式"); // Consumer<String> consumer = (String s) -> { // System.out.println(s); // }; // consumer.accept("Lambda表達(dá)式"); Consumer<String> consumer = (s) -> System.out.println(s); consumer.accept("Lambda表達(dá)式"); }
3.3、數(shù)據(jù)類型可以省略,因?yàn)榭捎删幾g器推斷得出,稱為“類型推斷”
@Test public void test3() { Consumer<String> consumer = (s) -> System.out.println(s); consumer.accept("Lambda表達(dá)式"); }
3.4、Lambda若只需要一個(gè)參數(shù)時(shí),參數(shù)的小括號(hào)可以省略
@Test public void test4() { Consumer<String> consumer = s -> System.out.println(s); consumer.accept("Lambda表達(dá)式"); }
3.5、 Lambda需要兩個(gè)或以上的參數(shù),多條執(zhí)行語(yǔ)句,并且可以有返回值
@Test public void test5() { Comparator<Integer> comparator = (o1, o2) -> { System.out.println(o1); System.out.println(o2); return o1.compareTo(o2); }; System.out.println(comparator.compare(19, 12));//19 12 1 }
3.6、當(dāng)Lambda體只有一條語(yǔ)句時(shí),return 與 大括號(hào)若有,都可以省略
@Test public void test6() { Comparator<Integer> comparator = ((o1, o2) -> o1.compareTo(o2)); System.out.println(comparator.compare(-12, -34));//1 Consumer<String> consumer = s -> System.out.println(s); consumer.accept("Lambda表達(dá)式");//Lambda表達(dá)式 }
4、Lambda表達(dá)式的本質(zhì)
- 作為接口的實(shí)例
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-692335.html
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-692335.html
到了這里,關(guān)于Lambda表達(dá)式第五版的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!