亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Lamdba表達式一篇足夠

 

 

一、概述

1、是什么

Lambda表達式是一個匿名函數(shù),即沒有函數(shù)名的函數(shù)。也可以理解成是一段可以傳遞的代碼(將代碼像數(shù)據(jù)一樣進行傳遞),這樣一來代碼更加簡潔。

2、為什么

  • 代碼簡潔
  • 可能還有一些優(yōu)化,但是目前沒研究,研究到的時候再來補充。

二、語法組成

param -> body

1.中間以 -> 隔開形成左右兩部分。我們稱->為箭頭操作符。2.表達式左邊:Lambda表達式的參數(shù)列表。3.表達式右邊:Lambda表達式中所需執(zhí)行的功能,即Lambda體。

三、語法格式

1、無參無返回

方法沒參數(shù)且沒返回值,比如public void test() {System.out.println("hello")},用lambda表達式,首先看我們的Lambda組成公式:param -> body。無參就用()代替,那么就是() -> body,方法體是輸出語句,所以:() -> System.out.println("hello"),別問我方法名稱在哪?第一個就說了,匿名函數(shù),即沒有函數(shù)名的函數(shù)。

2、一參無返回

方法有一個參數(shù)且沒返回值,比如:public void test(int a) {System.out.println(a)},用lambda表達式,首先看我們的Lambda組成公式:param -> body。有參數(shù)就放到()里就行了,那么就是(int a) -> System.out.println(a)

值得注意的是:1.若參數(shù)只有一個,則我們可以省略小括號,如下:int a -> System.out.println(a)2.我們可以省略參數(shù)類型,因為jdk會為我們自動推斷。如下:a -> System.out.println(a)

3、多參無返回

方法有一個以上參數(shù)且沒返回值,比如:public void test(int a, String b) {System.out.println(a + ":" + b)},用lambda表達式,首先看我們的Lambda組成公式:param -> body。有參數(shù)就放到()里就行了,那么就是(int a, String b) -> {System.out.println(a + ":" + b)}

值得注意的是:1.若參數(shù)只有一個,則我們可以省略小括號,但是一個以上就不能省略了。2.我們可以省略參數(shù)類型,因為jdk會為我們自動推斷。如下:(a, b) -> {System.out.println(a + ":" + b)}

4、多參有返回

方法有一個以上參數(shù)且有返回值,比如:public String test(int a, String b) {return a + ":" + b},用lambda表達式,首先看我們的Lambda組成公式:param -> body。有參數(shù)就放到()里就行了,那么就是(int a, String b) -> {return a + ":" + b}

值得注意的是:1.若參數(shù)只有一個,則我們可以省略小括號,但是一個以上就不能省略了。2.我們可以省略參數(shù)類型,因為jdk會為我們自動推斷。如下:(a, b) -> {return a + ":" + b}

5、體只有一條

首先看我們的Lambda組成公式:param -> body。體只有一條的意思是body只有一條語句。多條語句不可省略這種情況下我們可以省略{},且不管你有無返回值都可以省略return。多條語句不可省略。比如:public void test(int a) {System.out.println(a)}會寫成: a -> System.out.println(a)比如:public int test(int a) {return a + 100}會寫成: a -> a + 100

四、實戰(zhàn)演示

1、無參無返回

/**
* 無參無返回,我們以Runnable接口為例,因為Runnable的run()方法就是無參無返回的。
*/
private static void test1() {
 Runnable runnable = new Runnable() {
 @Override
 public void run() {
 System.out.println("test1");
 }
 };
 runnable.run();
}
public static void main(String[] args) {
 test1();
 /**
 * lambda的方式重寫無參無返回。
 * 說明一下:這里的無參無返回指的是Runnable接口的run方法無參無返回,至于細(xì)節(jié)問題,先不管,下一章節(jié)你秒懂。
 * 現(xiàn)在你只需要知道lambda真的很簡單!
 */
 Runnable runnable = () -> System.out.println("test1");
 runnable.run();
}

2、一參無返回

/**
* 一參無返回
*/
private static void test2(int a) {
 System.out.println("a=" + a);
}
public static void main(String[] args) {
 test2(1);
 /**
 * lambda的方式重寫一參無返回。
 * 說明一下:這里的無參無返回指的是Consumer接口的accept方法一參無返回,你會問Consumer是什么,先不管,下一章節(jié)你秒懂。
 * 現(xiàn)在你只需要知道lambda真的很簡單!
 */
 Consumer<Integer> consumer = (a) -> System.out.println("a=" + a);
 consumer.accept(1);
 //---------------------------一參可省略小括號-----------------------------------//
 Consumer<Integer> consumer2 = a -> System.out.println("a=" + a);
 consumer2.accept(1);
}
// 多參無返回同理,不寫了。,直接搞多參有返回吧

3、多參有返回

public static void main(String[] args) {
 /**
 * 多參有返回,這里拿比較接口來做案例
 */
 Comparator<Integer> comparator2 = new Comparator<Integer>() {
 @Override
 public int compare(Integer o1, Integer o2) {
 System.out.println("多參有返回");
 return Integer.compare(o1, o2);
 }
 };
 /**
 * lambda的方式重寫多參有返回。
 * 說明一下:這里的多參無返回指的是Comparator接口的compare方法多參有返回,細(xì)節(jié)先不管,下一章節(jié)你秒懂。
 * 現(xiàn)在你只需要知道lambda真的很簡單!
 */
 Comparator<Integer> comparator = (a, b) -> {
 // 需要注意的是:body多行,{}不能省略。
 System.out.println("多參有返回");
 return a.compareTo(b);
 };
}

五、總結(jié)

本章要學(xué)會以下東西

  • 什么是lambda
  • 為什么用lambda
  • lambda語法組成
  • lambda語法格式
  • 并不要求你會用
  • 要明白真的節(jié)省代碼,如下:對接口的創(chuàng)建匿名內(nèi)部類的實現(xiàn)時,只需一句話,比如:
Runnable r = () -> System.out.println("hello");

而具體什么樣的接口能用lambda呢?我們隨便寫個interface的話可以用嗎?顯然不行,這就引人深思了,為什么案例中的Runnable和Comparator接口都可以用lambda替代其內(nèi)部類的實現(xiàn)?小伙伴們你們覺得可以代替嗎?盡情吧答案評論在下方吧。

分享到:
標(biāo)簽:表達式 Lamdba
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定