五月十五日java基础知识点
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基础知识点的更多相关文章
- Java基础知识点(四)
前言:记录Java基础知识点,方便熟悉与掌握. 1.面向对象的"六原则一法则" “六原则一法则”:单一职责原则.开闭原则.依赖倒转原则.里氏替换原则.接口隔离原则.合成聚合复用原则 ...
- Java基础知识点(三)
前言:准备将Java基础知识点总结成一个系列,用于平常复习并加深理解.每篇尽量做到短小精悍,便于阅读. 1.Math类中相关函数 Math.floor(x):返回不大于x的最大整数.eg:Math.f ...
- Java基础知识点(二)
前言:Java的基础知识点不能间断. 1.Array和ArrayList的区别 关于Array的用法,参看:http://blog.csdn.net/b_11111/article/details/5 ...
- Java基础知识点(一)
前言:本篇随笔,主要记录Java的基础知识点,不管是用于项目或者面试中,笔者认为都非常有用,所以将持续更新...... 1.Java的访问权限 Java中有四种访问权限:默认访问权限.public.p ...
- Java基础知识点总结
前言 本文主要是我之前复习Java基础原理过程中写的Java基础知识点总结.Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其 ...
- JAVA基础知识点总结(全集)
1.JAVA简介 1.1java体系结构:j2se,javaweb,j2ee 1.2java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定) 1.3 JDK与JRE,JDK:java开发环境 ...
- java基础知识点补充---二维数组
#java基础知识点补充---二维数组 首先定义一个二维数组 int[][] ns={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; 实现遍 ...
- Java基础知识点
以下10点为JAVA 基础知识,后面将足以总结和完善以备面试 数据类型 (包装类,字符串,数组) 异常处理 Java IO和NIO 数据结构 (集合和容器 ) 多线程(并发) 网络通信(协议) 面向对 ...
- 如何学习java?Java基础知识点分享
面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...
- Java 基础知识点
很多 Java 基础的东西都忘记了, 有必要再复习一些基本的知识点. 本文主要参考 https://github.com/Snailclimb/JavaGuide ================== ...
随机推荐
- [jmeter的使用]jmeter上传文件接口的写法
1.类型和参数名称,依据接口/抓的包决定 2.必须选择java否则报错 3.http header也要写
- Oracle “ORA-12154: TNS: 无法解析指定的连接标识符”错误------网络摘录
相信使用过Oracle数据库的人一定碰到过"ORA-12154: TNS: 无法解析指定的连接标识符"错误,我在此做一个小小的总结. 在程序中连接Oracle数据库的方式与其他常用 ...
- mysql表操作2
表介绍: 表就相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 创建表: #语法: create table 表名( 字段名1 类型[(宽度) 约束 ...
- vue 高级部分
props的其它内容 props的作用就是用于在子组件中接收传入的数据 props的使用方式 1.数组 props:['name'] 2.对象,指定传入变量的类型 props:{name:Number ...
- 2、HTTP的消息格式
概念 HTTP协议 Hyper Text Transfer Protocol 超文本传输协议 传输协议 传输协议定义了客户端和服务器端通信时,发送数据的格式. 特点 基于TCP/IP的高级协议 默认端 ...
- 2003031120—廖威—Python数据分析五一假期作业
项目 要求 课程班级博客链接 20级数据班(本) 这个作业要求链接 Python数据分析五一假期作业 博客名称 2003031120-廖威-Python数据分析五一假期作业 要求 每道题要有题目,代码 ...
- CMMI的软件工程13-16章读书笔记
一.软件测试 软件测试是为了发现程序中的错误而执行的过程.测试只能证明软件有错,而不能保证软件程序没错. 1. 软件版本 Alpha版 公司内测版本 Beta版 对外公测版本 发布版 正式发布版本 ...
- oracle vm virtualBox 虚拟机共享磁盘后报错
不能为虚拟电脑 xxx2打开一个新任务. Locking of attached media failed. A possible reason is that one of the media is ...
- vue中的普通函数与箭头函数以及this关键字
普通函数 普通函数指的是用function定义的函数 var hello = function () { console.log("Hello, Fundebug!"); } 箭头 ...
- 三种遍历的方法(map和forEach的区别)
一. for循环 arr[index]可以改变原数组 二. forEach方法 forEach方法的返回值是一个undefined: 2. 在循环体内改变item的值不会影响原数组,而是只在循环体内生 ...