Java8新特性】Java8新特性相关面试题
本问题对应的项目链接:高频题回答模版训练
PS:这个一般也不会有什么连环炮,面试官就想看看你是否了解Java8的一些新特性,因为在工作中,这些新特性还用的挺多的。
1、关于Java8的新特性,你了解多少?可以讲几个吗?(PS:讲3~4个即可,Lambda 和 stream 必须包含)
2、Lambda 表达式解决了什么问题?Lambda 真正的好处是什么?
本问题对应的项目链接:高频题回答模版训练
PS:这个一般也不会有什么连环炮,面试官就想看看你是否了解Java8的一些新特性,因为在工作中,这些新特性还用的挺多的。
1、关于Java8的新特性,你了解多少?可以讲几个吗?(PS:讲3~4个即可,Lambda 和 stream 必须包含)
2、Lambda 表达式解决了什么问题?Lambda 真正的好处是什么?
共以下 2 个回答
1、关于Java8的新特性,你了解多少?可以讲几个吗?(PS:讲3~4个即可,Lambda 和 stream 必须包含)
下面说几个比较了解的:
第一个是 Lambda 表达式,它可以直接作为参数传递给方法或存储在变量中,可以在任何需要函数式接口的地方使用。并且以前使用匿名内部类的地方现在都可以用 Lambda 表达式来化简。
第二个是 Stream API,不同于集合关注的是对数据的存储,它关注的是对数据的运算处理,比如可以对集合进行过滤,映射,排序等等,使用起来也十分简洁。
第三个是新增的 Optional 类,它主要是为了解决 Java 中的空指针而生的。它可以包装一个对象,该对象可能为空,通过一系列的方法操作该对象,而无需显示地进行 null 检查。
还有方法引用,通过一对冒号 ‘ :: ‘ 操作符来表示。对于静态方法引用,可以用 ‘类名::静态方法名’ 表示,对于示例方法引用,可以用 ‘类名::方法名’ 表示等等。
2、Lambda 表达式解决了什么问题?Lambda 真正的好处是什么?
Lambda 主要解决的是代码的冗余问题。Java 8 之前,为了传递功能到方法中,必须使用匿名内部类,导致代码非常冗余且难以阅读,使用 lambda 表达式可以以一种非常简洁的方式替代它,同时也为 Java 引入了函数式编程的能力。
Lambda 的好处在于它能以更紧凑的方式表示代码逻辑,写出来的代码简洁清晰,可读性好。结合 Stream API 可以简洁高效的对集合进行操作。
3、demo
1.lambad表达式,比如:PriorityQueue pq = new PriorityQueue<>((a, b) -> a – b) ; stream()api,比如:List result = nums.stream().sorted().collect(Collectors.toList()); 时间api,比如localDate和localTime;引入了接口的默认方法和静态方法;有了Nashorn引擎,可以运行JavaScript;
2.可以把原来十几行代码压缩到一行代码,使代码更简洁易懂