欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

21-Java1.8新特性

程序员文章站 2022-12-20 16:13:15
一,函数式编程思想1.1 概念在数学中,函数就是一套计算方案。它重点放在 “ 拿什么东西就能做什么事情 ”。对于面向对象的编程思想而言,我们必须明确是哪一个对象来做这件事情的,而函数式编程思想的重点是 “ 做什么,不是以什么形式来做 。”1.2 函数式编程思想和面向对象思想比较案例new Thread(new Runnable(){ @Override public void run() { for(int i = 1;i <= 100; i++){...

一,函数式编程思想

1.1 概念

在数学中,函数就是一套计算方案。它重点放在 “ 拿什么东西就能做什么事情 ”。

对于面向对象的编程思想而言,我们必须明确是哪一个对象来做这件事情的,

而函数式编程思想的重点是 “ 做什么,不是以什么形式来做 。”

1.2 函数式编程思想和面向对象思想比较案例

new Thread(new Runnable(){
    @Override
    public void run() {
        for(int i = 1;i <= 100; i++){
            System.out.println(Thread.currentThread().getName() +"---"+i);
        }
    }
}).start();


new Thread(() -> {
    for(int i = 1;i <= 100; i++){
        System.out.println(Thread.currentThread().getName() +"---"+i);
    }
}).start();

如果要使用实现 Runnable 接口的方式开启线程,我们必须创建出 Runnable 的实现类对象,并重写 run() 方法明确线程中要执行的任务。我们的重点是开启线程,让线程执行指定的任务,而不是创建 Runnable 的实现类对象也不是去重写 run() 方法。实际上,只有 run() 方法中的方法体才有重点。

1.3 Lambda表达式的语法

组成:

  1. 参数列表
  2. 箭头
  3. 代码块

格式:

(参数列表)-> { 代码块 }

格式说明:

  1. ():表示接口中抽象方法的参数列表;方法没有参数的话就留空,有的话就跟着接口中的这个方法的参数列表来写。
  2. ->:传递的意思,把参数传递给方法体
  3. {}:重写接口抽象方法的方法体

Lambda表达式中可以省略的内容:

  1. 参数列表中的类型
  2. 如果参数只有一个,那么连 " () "也能省略,此时 " () " 省略情况下,类型一定不能写
  3. 如果 " {} " 中只有一行代码,
    1. 重写的方法没有返回值:可以省略 " {} " ,此时该语句的分号必须省略
    2. 重写的方法有返回值:可以省略 " {} ",此时 " reuturn " 和 分号 必须省略

Lambda 的使用前提:

  1. 使用 Lambda 表达式必须要有接口,接口中有且只能有一个抽象方法,默认的方法、静态的方法、私有方法也可以包含。
  2. 方法的参数必须是函数式接口,才能使用 Lambda 作为该接口的实例

函数式接口:有且仅有一个抽象方法的接口,可以通过 @FunctionalInterface 注解来校验该接口是否的函数式接口

1.4 常见的函数式接口

1.4.1 Supplier

该接口中有一个无参的抽象方法:T get()

它用来获取一个泛型参数指定的数据类型的对象

1.4.2 Predicate

该接口中有一个无参的抽象方法:boolean test(T t),两个默认方法:and() 、or()

它用来判断是否满足条件

本文地址:https://blog.csdn.net/zhu_fangyuan/article/details/107660755

相关标签: java_笔记整理