日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

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

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

Lamdba表達式一篇足夠

 

 

一、概述

1、是什么

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

2、為什么

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

二、語法組成

param -> body

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

三、語法格式

1、無參無返回

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

2、一參無返回

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

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

3、多參無返回

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

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

4、多參有返回

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

值得注意的是:1.若參數只有一個,則我們可以省略小括號,但是一個以上就不能省略了。2.我們可以省略參數類型,因為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

四、實戰演示

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方法無參無返回,至于細節問題,先不管,下一章節你秒懂。
 * 現在你只需要知道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是什么,先不管,下一章節你秒懂。
 * 現在你只需要知道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方法多參有返回,細節先不管,下一章節你秒懂。
 * 現在你只需要知道lambda真的很簡單!
 */
 Comparator<Integer> comparator = (a, b) -> {
 // 需要注意的是:body多行,{}不能省略。
 System.out.println("多參有返回");
 return a.compareTo(b);
 };
}

五、總結

本章要學會以下東西

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

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

分享到:
標簽:表達式 Lamdba
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

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

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定