lambda表达式学习体会

lambda表达式本质上就是一个匿名方法,但这个方法不是独立执行的,而是用于实现由函数式接口定义的另一个方法。因此,lambda表达式会导致产生一个匿名类,lambda表达式也常被称为闭包。
函数式接口:指仅包含一个抽象方法的接口,有时也被称为SAM类型,意思是单抽象方法(Single Abstract Method)

  • 简单lambda表达式
//无参数
interface A(){
	int getValue();
}
//含参数
interface B(){
	int getValue(String aNumber);
}
class Test(){
	public static void main(String[] args){
		A a;
		a = ()->1;
		System.out.println(a.getValue());//结果为1
		
		B b;
		b = (n)->Integer.valueOf(n);
		System.out.println(b.getValue("5"));//结果为5
	}
	
}
  • 块lambda
    块lambda可以执行多行代码,和简单lambda有所不同,需要自行return一个结果
interface A(){
	int factorial(Integer n);//阶乘
}
class Test(){
	public static void main(String[] args){
		
		A a = (n)->{
			int result = 1;
			for(int i = 1; i <= n; i++){
				result = i*result;
			}
			return result;
		};
		System.out.println(a.factorial(2));//结果为2
		System.out.println(a.factorial(3));//结果为6
	}
	
}
  • 将lambda表达式作为参数传递
interface A(){
	int factorial(int i);//阶乘
}
class Test(){
	static int test(A a,int i){
		return a.factorial(i)
	}
	public static void main(String[] args){
		int factorial= Test.test((n)->{
			int result = 1;
			for(int i = 1; i <= n; i++){
				result = i*result;
			}
			return result;
		},2);
		System.out.println(factorial);//结果为2
	}
}
  • lambda表达式方法引用
    相当于直接引用一个方法实现
interface A(){
	int getValue();
}

class Test(){
	static int test1(int i){
		return ++i;
	}
	int test2(int i){
		return ++i;
	}
	public static void main(String[] args){
		//静态方法的方法引用
		A a = Test::test1;
		System.out.println(a.getVaule(1));//结果为2
		
		//实例方法的方法引用
		Test t = new Test();
		
		A a2 = t::test2;
		System.out.println(a2.getVaule(1));//结果为2
	}
	
}

简单介绍了一下lambda表达式,其实lambda表达式并不难理解,之后会整理一些lambda表达式在流中的应用场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值