学习任务:

视频学习

动手测试简化格式

理解函数式编程思想

Lambda 在使用时也存在一些简化格式:

1)参数类型可以省略,有多个参数的情况下要么都省略要么不省略。

上边调用doFun2的例子中传递lambda时省略参数类型,如下代码:

//原来的代码
doFun2((int x,int y)->{
	int z = x*y;
	return z;
});

//调用doFun2
doFun2((x,y)->{
	int z = x*y;
	return z;
});

完整代码如下:

package com.pbteach.javase.oop.lambda.test2;

/**
 * Lambda测试
 * 
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public class Fun2Demo2 {
 
	public static void main(String[] args) {

		//调用doFun2
		doFun2((x,y)->{
			int z = x*y;
			return z;
		});
	}

	public static void doFun2(Fun2 fun2) {
		int r = fun2.handler(2,3);
		System.out.println(r);
	}
}

2)如果函数体只有一条语句可以省略大括号和分号以及return

将上边调用doFun2的例子改造如下:

//调用doFun2
doFun2((x,y)->x*y);

完整代码如下:

package com.pbteach.javase.oop.lambda.test2;

/**
 * Lambda测试
 * 
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public class Fun2Demo3 {
 
	public static void main(String[] args) {

		//调用doFun2
		doFun2((x,y)->x*y);
	}

	public static void doFun2(Fun2 fun2) {
		int r = fun2.handler(2,3);
		System.out.println(r);
	}
}

3)如果参数只有一个则可以省略小括号

下边定义一个接口进行测试:

package com.pbteach.javase.oop.lambda.test2;

/**
 * 	函数式接口
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public interface Fun3 {
	//有参无返回值
	void handler(String msg);
}

lambda测试,由于抽象方法的形式只有一个所以Lambda表达式可以省略小括号,由于Lambda函数体只有一条语句所以可以省略大括号。

代码如下:

package com.pbteach.javase.oop.lambda.test2;

/**
 * Lambda测试
 * 
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public class Fun3Demo {
 
	public static void main(String[] args) {

		//调用doFun1
		doFun3(name->System.out.println("hello"+name));
	}

	public static void doFun3(Fun3 fun3) {
		fun3.handler("攀博课堂");
	}
}

运行:

hello攀博课堂

Lambda表达式是Java对函数式编程的支持,函数式编程也是一种编程思想,它与面向对象编程思想的区别在于:

1)核心不同

面向对象编程认为一切都是对象,函数式编程认为一切都是函数,函数是“第一等公民”,函数和其它数据类型一样,也可以赋值给其它变量,也可以作为方法的参数等。

在Java中的方法就是函数,由输入、输出和函数体组成。

2)目标不同

面向对象编程首先要确定谁去做,因为确定了谁去做就确定了对象的身份和对象的功能。

函数式编程首先要确定做什么,确定了做什么也就确定了函数的功能。

比如:攀博课堂学生选课功能,按照面向对象的编程思想首先要分析需要设计有几个对象及对象的属性和方法,如果按照函数式编程的思想去分析首先要确定做哪几件事,设计几个函数及函数的输入、输出及函数逻辑是什么。

目前像Java、Python等面向对象编程语言都支持函数式编程。

提问-攀博课堂
我要提问 不会就问,有效沟通
关注公众号,加入微信群交流提问。 攀博课堂官方公众号
问答列表,查看本知识点所有问题