开发面试经历之:谈一谈你对JDK1.8新特性的理解

PS:

记得去年自己在南京的某一家公司面试的时候,面试官边查看我的简历,头也没抬一边问我:“谈一谈对jdk1.8的理解。” 说句实话,以前自己真的没有好好的查看过jdk,认为不过是一个环境而已,没有对其了解太多,所以第一个问题就卡壳了,让自己的第一印象就丢了分。这都过了好久,听说jdk1.9都出来了,果然学习速度赶不上更新速度,还是查看了些文章,挑了点重要的东西,写下这篇小小的总结,给自己一个交代!

一、增加default关键字

1.8之前:接口类只能定义方法名,返回类型和参数列表。
1.8之后:接口类可以有静态方法,默认方法,也就是说接口中可以有方法的具体实现。
default 的使用:
在这里插入图片描述

继承时候可以看见:
在这里插入图片描述
default在service中所修饰的方法发现是可以选择性的,也就是说,当实现这个接口类的时候,并不用去重写这个方法,那么不重写可以调用吗?
在这里插入图片描述
完全可以调用service中的方法。
这就是jdk1.8特性之一:允许接口类中有默认方法,且用default修饰,大大减少了开发代码冗余量。

Lambda表达式

JDK在不断的升级过程中,要治理及觉得问题之一就是让程序代码变得更加简洁。jdk8引入的Lambda表达式在简化程序代码方面大显身手,它用简明扼要的语法来表达某种功能所包含的操作。

1.1 Lambda表达式的基本用法

在这里插入图片描述
这是最常见的foreach遍历,在jdk8之后,利用lambda表达式遍历方法如下:
在这里插入图片描述
比较三种遍历结合的代码不难发现,使用Lambda表达式可以简化程序代码,以上方式二和方式三种的lambda表达式是简写过程,其具体的语法应该是:

(String name)->{
	System.out.println(name);
	return;
}
1.2 Lambda表达式代替内部类

Lambda表达式种的一个重要用武之地就是代替内部类。如图
在这里插入图片描述
上图的Lambda表达式相当于创建了实现Runnable接口的匿名对象,由于Runnable接口的run方法不带参数,因此,Lambda表达式的参数列表也相应为空(),Lambda表达式种的符号"->“后面的可执行语句相当于run方法的方法体,该符号读作"goes to”。

函数式接口FunctionalInterface

列举函数式变成特点:
函数可以作为变量、参数、返回值和数据类型。
基于表达式来替代方法的调用
函数无状态,可以并发和独立使用
函数无副作用,不会修改外部的变量
函数结果确定性;同样的输入,必然会有同样的结果。
函数式编程的优点:
代码简洁,开发效率高
接近自然语言,易于理解
由于函数的特性,易于调试和使用
易于并发使用
脚本语言的特性,易于升级部署
此外,需要注意的是:
唯一的抽象类方法,有且仅有一个
可以用作Lambda表达式

给一个简单的示例:
在这里插入图片描述
首先定义一个接口,而后使用lamdba去调用
在这里插入图片描述
如果以前的写法则是使用内部类的方式,这样的写法极大的简化了代码,实现了需求。

以上便是对jdk1.8的理解,也算是从中挑选了几个特征比较大的简单来分析,其实还是有很多细节方面的东西如Lamdba的使用,如果以后有时间我一定会再将此这篇文章更新更新,也欢迎更多的大佬对我多多指教,共同进步!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值