No2.Lamda表达式

知识点:

    1.分析函数式编程的产生原因;  

    2.掌握函数式编程的语法;

具体内容:

    Lamda属于函数式编程的概念,那为什么需要函数式的编程呢?这需要通过匿名内部类来分析。

  范例:传统的匿名内部类

package 比较器;

interface IMessage {
	public void print();
}

package 比较器;

public class TestDemo {

	public static void main(String[] args) {
		fun(new IMessage(){
			public void print(){
				System.out.println("hello world");
			}
		});

	}
	public static void fun(IMessage msg){
		msg.print();
	}

}

     本质上以上的代码中,最终需要的只是一个输出而已,但是由于JAVA开发结构性完整的要求,所以不得不在这个核心的语句上嵌套更多的内容内容。

fun(new IMessage(){
            public void print(){
                System.out.println("hello world");
            }
        }
);

以上代码中层层嵌套的代码只有其中的System.out.println("hello world")起作用。

有人认为以上的做法实在是过于的严谨了,所以在JDK1.8时代引入勒函数式的编程,以此来简化代码。

范例:使用Lamda表达式。

package 比较器;

public class TestDemo {

	public static void main(String[] args) {
		fun(()->System.out.println("hello world!"));
	}
	public static void fun(IMessage msg){
		msg.print();
	}

}

      整个操作里面内部类只是进行了一行语句的输出,所以此时使用Lamda表达式可以非常轻松的实现输出要求。这其实就是为了解决匿名内部类过多繁杂的语法而出现的。

      对于Lamda语法有三种形式:

          1.(参数)->单行语句。

          2.(参数)->{单行语句.....单行语句}。多个单行语句,前面{}是一个代码块。

          3.(表达式)->表达式。

范例:观察有参的单行语句

package 比较器;

interface IMessage {
	public void print(String str);
}

package 比较器;

public class TestDemo {

	public static void main(String[] args) {
		fun((s)->System.out.println(s));
	}
	public static void fun(IMessage msg){
		msg.print("hello world");
	}

}

范例:编写多行语句

package 比较器;

interface IMessage {
	public void print(String str);
}

package 比较器;

public class TestDemo {

	public static void main(String[] args) {
		fun((s)->{
			s=s.toUpperCase();   //转大写
			System.out.println(s)
			});
	}
	public static void fun(IMessage msg){
		msg.print("hello world");
	}

}

范例:编写一个表达式

package 比较器;

interface IMessage {
	public void add(int x, int y);
}
package 比较器;

public class TestDemo {

	public static void main(String[] args) {
		//首先要定义此处表达式里面需要接收的变量,单行语句直接进行输出
		fun((s1,s2)->s1+s2);
	}
	public static void fun(IMessage msg){
		System.out.println(msg.add(10, 20));
	}

}

fun(S1,S2)->{return s1+s2}

总结:利用Lamda表达式最终解决的问题:避免了匿名内部类定义过多无用的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值