1.匿名内部类适用于编写事件程序

interface Ishape{
void shape();
}
class MyType{
public void outShape(Ishape s){//接口变量作为参数
s.shape();
}
}
public class app13_5 {
public static void main(String[] args) {
MyType m = new MyType();
m.outShape(new Ishape(){//匿名内部类作为方法方法调用参数
@Override
public void shape(){
System.out.println("我可以是任何形状");
}
});
}
}

2.函数式接口(单抽象方法接口)是指只包含一种抽象方法接口
最好使用@FunctionalInterface注解表示接口为函数式接口

interface IntFun{
double dis(int r);
}
public class app13_6 {
public static void main(String[] args) {//利用接口类创建匿名内部类对象并实现接口中的方法
IntFun fun =(new IntFun() {
@Override
public double dis(int r) {
return 2*r;
}
});
double m = fun.dis(2);
System.out.println(m);
}
}

3.Lambda表达式是指只有一种抽象方法接口环境下的一种简化定义形式
用于解决匿名内部类定义复杂问题
4.一个Lanbda表达式对应一个函数式接口,可将Lambada表达式看作是实现函数是接口
的匿名内部类的一个对象
例如:Runnable接口就是一个函数接口
@FuncatonalInterface
public interface Runnable {void run();}

@FunctionalInterface
interface IntFun1{
double dis(int r);
}
public class app13_7 {
public static void main(String[] args) {//利用Lambda表达式简化创建匿名内部类
IntFun1 fun = (i)->{return 2*i;};
double m = fun.dis(3);
System.out.println(m);
}
}

5.函数式接口中可以有Object类中覆盖,也就是equals()方法、toString()方法、hashCode()方法
例如:public interface Comparator<T>//泛型接口
{
int comparator(T o1,T o2);
boolean equals(object obj);//父类中Object方法
}
6.可以在函数式接口中定义静态方法和默认方法
7.lambda表达式(匿名方法)是可以传递给方法的一段代码
Lambda表达式是由参数列表、箭头、方法体三部分组成
其语法格式:
(类型1 参数1,类型2 参数2 ,...)->{方法体}
例如:将a.outShape(new Ishape(){
public void shape(){
System.out.println("我可以是任何形状");}
});
用Lambda表达式表示为:
a.outShape(
() ->{System.out.println("我可以是任何形状!");});
Lambda表达式省略了接口类型与方法名,->左边是参数列表,右边是方法体
8.Lambda表达式不建议用来处理复杂语句组

public class app13_8 {
public static void main(String[] args) {
String []names = {"唐僧 "," 孙悟空 "," 猪八戒 "," 沙和尚 "};
List<String> al = Arrays.asList(names);//调用静态方法asList()创建列表对象
System.out.print("用匿名内部类遍历输出:");
al.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.print(s);
}
});
System.out.print("\n"+"用Lambda表达式遍历输出:");
al.forEach((s) -> System.out.print(s) );
}
}

总结:函数式接口接口中只含有一个抽象方法的接口

Lambada表达式匿名方法

Lambda表达式是与函数式接口连用的

五月十五日java基础知识点的更多相关文章

  1. Java基础知识点(四)

    前言:记录Java基础知识点,方便熟悉与掌握. 1.面向对象的"六原则一法则" “六原则一法则”:单一职责原则.开闭原则.依赖倒转原则.里氏替换原则.接口隔离原则.合成聚合复用原则 ...

  2. Java基础知识点(三)

    前言:准备将Java基础知识点总结成一个系列,用于平常复习并加深理解.每篇尽量做到短小精悍,便于阅读. 1.Math类中相关函数 Math.floor(x):返回不大于x的最大整数.eg:Math.f ...

  3. Java基础知识点(二)

    前言:Java的基础知识点不能间断. 1.Array和ArrayList的区别 关于Array的用法,参看:http://blog.csdn.net/b_11111/article/details/5 ...

  4. Java基础知识点(一)

    前言:本篇随笔,主要记录Java的基础知识点,不管是用于项目或者面试中,笔者认为都非常有用,所以将持续更新...... 1.Java的访问权限 Java中有四种访问权限:默认访问权限.public.p ...

  5. Java基础知识点总结

    前言 本文主要是我之前复习Java基础原理过程中写的Java基础知识点总结.Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其 ...

  6. JAVA基础知识点总结(全集)

    1.JAVA简介 1.1java体系结构:j2se,javaweb,j2ee 1.2java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定) 1.3 JDK与JRE,JDK:java开发环境 ...

  7. java基础知识点补充---二维数组

    #java基础知识点补充---二维数组 首先定义一个二维数组 int[][] ns={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; 实现遍 ...

  8. Java基础知识点

    以下10点为JAVA 基础知识,后面将足以总结和完善以备面试 数据类型 (包装类,字符串,数组) 异常处理 Java IO和NIO 数据结构 (集合和容器 ) 多线程(并发) 网络通信(协议) 面向对 ...

  9. 如何学习java?Java基础知识点分享

    面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...

  10. Java 基础知识点

    很多 Java 基础的东西都忘记了, 有必要再复习一些基本的知识点. 本文主要参考 https://github.com/Snailclimb/JavaGuide ================== ...

随机推荐

  1. Javaheima12

    Java 不可变集合 如果某个数据不能修改,把它防御性地拷贝到不可变集合红是个很好的实践 或者当集合对象被不可信的库调用时,不可变形式是安全的 创建 再List,Set,Map接口中,都存在of方法, ...

  2. Ubuntu与centos之间的文件传输

          Ubuntu与centos之间的文件传输 默认端口:22 传输前确认端口是否开启 1.在Ubuntu上安装scp命令 apt-get install openssh-server 2.将U ...

  3. 油猴CSDN净化脚本

    CSDN版面越来越乱,最近还总是弹出红包雨和顶部巨大横幅,左侧也会随机出现学生认证弹窗.而且版面混乱难看,看起来非常费劲. 另外底下的推荐列表经常夹杂着CSDN文件下载的链接,下载文件又要付费,从来不 ...

  4. jieba原理

    一.jieba介绍jieba库是一个简单实用的中文自然语言处理分词库. jieba分词属于概率语言模型分词.概率语言模型分词的任务是:在全切分所得的所有结果中求某个切分方案S,使得P(S)最大. ji ...

  5. 在VMWare里安装Win11虚机

    1. 安装win11有最低硬件要求 64位CPU双核,内存4G,硬盘64G,受信任的平台模块(TPM)2.0,支持UEFI安全启动 2. VMware新建虚机的设置 1)创建64位虚拟机,CPU设置为 ...

  6. 抽风的Maven、maven插件及配置

    Idea 配合 Maven使用中有时遇到莫名奇妙的问题,又莫名奇妙的恢复正常.整理如下: 1.删除系统环境变量Maven_Home,只需在IDEA中指定Maven及settings.xml即可. 有时 ...

  7. WinHex恢复分区

    情景再现:可能在某一天,打开电脑时发现只剩C盘,剩下的盘找不到了,那么要如何恢复呢? 创建虚拟硬盘方便我们做实验 右键计算机 -> 管理 -> 磁盘管理右键 -> 创建VHD虚拟硬盘 ...

  8. 干货 | BitSail Connector 开发详解系列一:Source

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 BitSail 是字节跳动自研的数据集成产品,支持多种异构数据源间的数据同步,并提供离线.实时.全量.增量场景下全 ...

  9. 深入理解Go语言中的sync.Cond

    1. 简介 本文将介绍 Go 语言中的 sync.Cond 并发原语,包括 sync.Cond的基本使用方法.实现原理.使用注意事项以及常见的使用使用场景.能够更好地理解和应用 Cond 来实现 go ...

  10. Unity JobSystem使用及技巧

    什么是JobSystem 并行编程 在游戏开发过程中我们经常会遇到要处理大量数据计算的需求,因此为了充分发挥硬件的多核性能,我们会需要用到并行编程,多线程编程也是并行编程的一种. 线程是在进程内的,是 ...