java8之新特性Lambda表達式--接收兩個參數


什么是Lambda表達式:簡單來說,可以看成是對匿名內部類的縮寫,使用Lambda表達式,接口必須是函數式接口。

Lambda 表達式作用:使用 Lambda 表達式可以使代碼變的更加簡潔緊湊

Lambda 表達式,也可稱為閉包,它是推動 Java 8 發布的最重要新特性

語法

lambda 表達式的語法格式如下:

(parameters) -> expression 或 (parameters) ->{ statements}

以下是lambda表達式的重要特征:

  • 可選類型聲明:不需要聲明參數類型,編譯器可以統一識別參數值。
  • 可選的參數圓括號:一個參數無需定義圓括號,但多個參數需要定義圓括號。
  • 可選的大括號:如果主體包含了一個語句,就不需要使用大括號。
  • 可選的返回關鍵字:如果主體只有一個表達式返回值則編譯器會自動返回值,大括號需要指定明表達式返回了一個數值。

Lambda 表達式實例

Lambda 表達式的簡單例子:

// 1. 不需要參數,返回值為 5   () -> 5 // 2. 接收一個參數(數字類型),返回其2倍的值  x -> 2 * x // 3. 接受2個參數(數字),並返回他們的差值  (x, y) -> x  y // 4. 接收2個int型整數,返回他們的和  (int x, int y) -> x + y // 5. 接受一個 string 對象,並在控制台打印,不返回任何值(看起來像是返回void)  (String s) -> System.out.print(s)

下面代碼示例如:

首先定義一個接口如:

CryptonymInnerInterface

package com.test.cgb;

public interface CryptonymInnerInterface {
	// 定義一個抽象方法sum
	public int sum(int numberOne, int numberTwo);
}

 測試類如:

package com.test.cgb;

public class CryptonymInnerTest {

	public static void main(String[] args) {
		
		/*
		 * 匿名內部類的方式:因為平時是把類看成是一個模板,為了復用性才會把類寫在一個java文件里;
		 * 但是這里我們不需要重復使用該類,所以可以不用編寫類文件,而是使用匿名內部類的方式。
		 */ 
//		CryptonymInnerInterface m1 = new CryptonymInnerInterface() {
//			@Override
//			public int sum(int numberOne, int numberTwo) {
//				return numberOne + numberTwo;
//			}
//		};
//		System.out.println(m1.sum(123,456));
		
		/**
		 * 使用lambda表達式
		 */
		// 第一種寫法(常規寫法):
		CryptonymInnerInterface m1 = (int numberOne, int numberTwo) -> {
			return numberOne + numberTwo;
		};
		m1.sum(123, 456);
		
		/**
		 *  第二種寫法(簡寫):
		 *  1.形參列表的數據類型可以不寫,自動判斷 
		 *  2.如果方法體中的代碼只有一句,可以省略{}
		 *  3.如果return返回數據的,則可以省略掉return
		 */
		CryptonymInnerInterface m2 = (numberOne, numberTwo) -> numberOne + numberTwo;
		int twoSum = m2.sum(123, 456);
		System.out.println(twoSum);
	}
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM