Java学习笔记 Lamda表达式

Lamda表达式

1、本次预计讲解的知识点

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

2、掌握函数式编程的语法。

2、具体内容。

Lamda属于函数式编程的概念,那么为什么需要函数式编程?

如果想清楚函数式编程产生的目的,则必须通过匿名内部类分析

范例:传统的匿名内部类

package cn.mldn.demo;

interface IMessage {

         public void print();//这是一个接口里面原本定义的方法

}

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();

         }

}

 

 

E:\java>javac -d . TestDemo.java

 

E:\java>java cn.mldn.demo.TestDemo

Hello World

 

此代码之中,如果fun()方法,最终需要一个输出而已,但是由于java的开发的结构性完整要求,所以不得不在这个核心语句中嵌套更多的内容。

 

且此代码过于严谨了,所以在JDK1.8时代引入了函数式编程,可以简化以上的代码。

范例:使用Lamda表达式

package cn.mldn.demo;

interface IMessage {

         public void print();//这是一个接口里面原本定义的方法

}

public class TestDemo{

         public static void main(String[] args){     

                   fun(() -> System.out.println("Hello World!!!"));

         }       

         public static void fun(IMessage msg){

                   msg.print();

         }

}

 

 

E:\java>javac -d . TestDemo.java

E:\java>java cn.mldn.demo.TestDemo

Hello World!!!

整个操作里面匿名内部类只是进行一行语句的输出,所以此时使用Lamda表达式非常轻松的实现输出要求。

对于Lamda语法三种形式:

·(参数) –>单行语句;·(参数) -> {单行语句};     ·(参数) ->表达式

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

package cn.mldn.demo;

interface IMessage {

         public void print(String str);

}

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?!!!");//设置参数内容

         }

}

 

 

E:\java>javac -d . TestDemo.java

 

E:\java>java cn.mldn.demo.TestDemo

Hello World?!!!

范例:编写多行语句

package cn.mldn.demo;

interface IMessage {

         public void print(String str);

}

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?!!!");//设置参数内容

         }

}

E:\java>javac -d . TestDemo.java

 

E:\java>java cn.mldn.demo.TestDemo

HELLO WORLD?!!!

如果说现在代码里面只是一个简单的计算表达式,那么操作也可以很容易

范例:编写一个表达式

package cn.mldn.demo;

interface IMessage {

         public void add(int x,int y);

}

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;});

 

 

如果只是一个表达式,那么进行操作返回,还是不写return比较合适,是多行的时候才可以考虑写上return。

总结

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值