内建函数式接口

对于可能出现的函数式接口的方法最多只有4类:有参数有返回值、有参数无返回值、无参数有返回值、判断真假。
为了简化开发者的定义以及实现操作的统一,Java提供了一个新的开发包:java.util.function,并且在这个包中提供了以下4个核心的函数式接口。

1.功能型接口(Function)

接口定义如下:

@FunctionalInterface
public interface Function<T,R>{public R apply(T t);
}

主要作用:此接口需要接收一个参数,并且返回一个处理结果。

例:使用功能型函数式接口。本程序将利用Function接口引用,String类“public boolean startsWith(String str)”方法

package Project.Study.BuiltInFunctionalInterface;
import java.util.function.*;public class Test1 {public static void main(String args[]){Function<String,Boolean>fun="Hello World"::startsWith;//public boolean startsWith(String prefix, int toffset)方法//startsWith() 方法用于检测字符串是否以指定的前缀开始。System.out.println(fun.apply("H"));System.out.println(fun.apply("e"));System.out.println(fun.apply("ll"));}
}
//结果:
//true
//false
//false

2.消费接口(Consumer)

接口定义如下:

@FunctionalInterface
public interface Consumer<T>{public void accept(T t);
}

主要作用:此接口只是负责接收数据(引用数据时不需要返回),并且不返回处理结果。

例:使用消费型接口。

package Project.Study.BuiltInFunctionalInterface;
import java.util.function.Consumer;public class Test2 {public static void main(String args[]){Consumer<String>cons=System.out::println;cons.accept("Hello World");}
}
//结果
//Hello World

本程序利用消费性接口接收了,System.out.println()方法的引用,此方法定义中需要接收一个String型数据,但是不会返回任何结果。

3.供给型接口(Supplier)

接口定义如下:

@FunctionalInterface
public interface Supplier<T>{public T get();
}

主要作用:此接口不接收参数,但是可以返回结果。

例:供给型接口。本程序使用String类的toUpperCase()方法(public String toUpperCase())。

package Project.Study.BuiltInFunctionalInterface;
import java.util.function.Supplier;public class Test3 {public static void main(String args[]){Supplier<String>sup="Hello World"::toUpperCase;//toUpperCase的意思是将所有的英文字符转换为大写字母,只对英文字母有效,对除了A~Z和a~z的其余字符无任何效果System.out.println(sup.get());,}
}
//结果
//HELLO WORLD

4.断言型接口(Predicate)

接口定义如下:

@FunctionalInterface
public interface Predicate<T,R>{public boolean test(T t);
}

主要作用:进行判断使用

例:断言型接口。本程序将引用String类中的equalsIgnoreCase()方法(public boolean equalsIgnoreCase(String str))。

package Project.Study.BuiltInFunctionalInterface;
import java.util.function.Predicate;public class Test4 {public static void main(String args[]){Predicate<String>pre="Hello World"::equalsIgnoreCase;//执行忽略大小写的比较,当比较两个字符串时,它会认为A-Z和a-z是一样的System.out.println(pre.test("HELLO WORLD"));}
}
//结果:
//true

Java学习总结:25相关推荐

  1. java学习(25):三目运算符

    /任务4:三目运算符 编写控制台java程序, 使用Scanner对象相关方法从控制台接收两个整数,比较他们的大小/ import java.util.Scanner; public class te ...

  2. Java学习笔记25

    Collection和Map接口是集合框架的根接口,List为Collection接口的子接口,List集合代表一个元素有序.可重复的集 合,集合中每个元素都有其对应的顺序索引.List集合允许使用重 ...

  3. 成为Java高手的25个学习要点

    成为Java高手的25个学习要点 想要精通Java,成为Java高手,需要不断的学习和积累.本文给出了Java学习过程中需要注意的25个学习目标,希望可以给您带来帮助. AD: 2013大数据全球技术 ...

  4. 想要成为JAVA高手的25个学习目标

    本文将告诉你学习Java需要达到的25个目标,希望能够对你的学习及找工作有所帮助.对比一下自己,你已经掌握了这25条中的多少条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GO ...

  5. Java学习之 多态 Polymorphism

    Java学习之多态 多态的概念 多态==晚绑定. 不要把函数重载理解为多态. 因为多态是一种运行期的行为,不是编译期的行为. 多态:父类型的引用可以指向子类型的对象. 比如 Parent p = ne ...

  6. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  7. java学习笔记9--内部类总结

    java学习笔记系列: java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对 ...

  8. Java入门1.2.3—一个老鸟的Java学习心得

    Java入门1.2.3-一个老鸟的Java学习心得 基本信息 作者: 臧萌    出版社:清华大学出版社 ISBN:9787302217831 上架时间:2010-3-30 出版日期:2010 年3月 ...

  9. java关于泛型的实验代码_[ Java学习 ] 泛型类的应用实验

    成文原因: 这篇文章是我这周所做的 Java 实验题的一个小总结. 这次实验让我深刻赞同了我们 Java 老师在这节实验课前告诉我们的话: 最重要的是把问题想明白,它要怎么拆分成几个类,每个类里究竟需 ...

  10. Java学习 第三章 数组(三)排序算法

    ** Java学习 第三章 数组(三)排序算法 ** 主要内容:排序算法.排序算法横向比较.Arrays工具类的使用.数组常见异常 1.数组中涉及到的常见算法:排序算法 1.1 排序算法分类:内部排序 ...

最新文章

  1. 关键任务应用程序依赖于故障保护存储器
  2. 单点登录与权限管理本质:session和cookie介绍
  3. js如何动态的修改css的background-image的样式
  4. MVP模式在Android中的应用之图片展示选择功能的框架设计
  5. 一个查看UI5控件所有公有方法的小技巧
  6. 同步异步阻塞非阻塞杂记
  7. python+Tesseract-OCR实现图片识别(只适合新手)
  8. 坑爹的水题之“元芳你怎么看”
  9. 北大博士送5个月外卖揭秘算法黑幕
  10. Adobe illustrator 排版后图形导出 - 连载 3
  11. .NET控件Designer架构设“.NET研究”计
  12. jupyter-notebook设置⽀持远程访问
  13. JAVA基础篇——JAVA运行环境(JDK、JRE、JVM)
  14. STM8L USART串口使用
  15. termux配置python安装kali_利用termux安装kali
  16. Android Fingerprint完全解析(三) :Fingerprint Hal层分析
  17. 2020.9.19hive函数和自定义UDF函数
  18. 创建一个动态空间存储未知大小的二维数组
  19. PL\SQL用户指南与参考10.1 转载
  20. STM32F767 Timer定时器与Usart串口综合实训

热门文章

  1. ATS插件channel_stats源码分析解读
  2. Blender车辆绑定动画制作视频教程
  3. NVME CLI -- nvme 命令查看NVME设备内部状态
  4. L1-023 输出GPLT (C++解决,含题解)
  5. SQL命令执行数据库备份
  6. RTMP协议中的Chunk Stream ID (CID)的作用
  7. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
  8. 作业05-继承、多态、抽象类与接口
  9. idea崩溃导致的svn插件丢失问题, maven dependencies视图丢失问题
  10. 在预装win8的电脑上换win7系统讲解