函数式编程思想

区别

面向对象思想:
做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.
函数式编程思想
只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程

典型例子

什么是函数式接口?

  • 有且仅有一个抽象方法的接口

1.Runnable

public interface Runnable {
    public abstract void run();
}

2.Comparable

public interface Comparable<T> {
 
    public int compareTo(T o);
}

传统实现函数式接口的写法

public class Demo{
    public static void main(String[] args) {
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("hello world~");
            }
        });
    }
}

使用Lambda的更优写法

public class Demo{
    public static void main(String[] args) {
        Thread t = new Thread( () -> System.out.println("Hello World!"));
    }
}
  • 从代码的语义中可以看出:我们启动了一个线程,而线程任务的内容以一种更加简洁的形式被指定。不再有“不得不创建接口对象”的束缚,不再有“抽象方法覆盖重写”的负担,就是这么简单!

Lambda表达式

(参数类型 参数名称) ‐> { 代码语句 }
格式说明:

  • 小括号内的语法与传统方法参数列表一致:无参数则留空;多个参数则用逗号分隔。
  • -> 是新引入的语法格式,代表指向动作。
  • 大括号内的语法与传统方法体要求基本一致。

自定义实现函数式编程

1.无参时:

  • 定义一个函数式接口:
public interface People {
    void sayHello();
}
  • 测试类
public class Demo2 {
    public static void main(String[] args) {
        invokesayHello(() -> System.out.println("我会说hello~"));
    }
    public static void invokesayHello(People people){
        people.sayHello();
    }
}

2.有参数时

  • 定义一个函数式接口
public interface appendStr {
    String appStr(String str1, String str2);
}
  • 测试类
public class strAppend {
    public static void main(String[] args) {
        append("Hello","World",(str1,str2) -> { return str1 + str2; });
    }
    public static void append(String str1,String str2,appendStr appendStr){
        String str = appendStr.appStr(str1,str2);
        System.out.println("拼接后的字符串" + str);
    }
}

省略规则

在Lambda标准格式的基础上,使用省略写法的规则为:

  1. 小括号内参数的类型可以省略;
  2. 如果小括号内有且仅有一个参,则小括号可以省略;
  3. 如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿胡爱编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值