最新Java 8 到 Java 14,改变了哪些你写代码的方式?,java泛型面试

文末

我将这三次阿里面试的题目全部分专题整理出来,并附带上详细的答案解析,生成了一份PDF文档

  • 第一个要分享给大家的就是算法和数据结构

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

  • 第二个就是数据库的高频知识点与性能优化

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

  • 第三个则是并发编程(72个知识点学习)

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

  • 最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

11561958-ce38ffef126f36aa.png

image.png

如以下例子:

11561958-339bf55804d22468.png

image.png

Lambda表达式具有简洁、容易进行并行计算、是未来的编程趋势等优点,但同时也会带来调试困难,新人理解成本高等缺点。

Streams API

除了Lambda 表达式外,Java 8中还引入了Stream API,这使得Java终于进入到函数式编程的行列中来了。

Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。

Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。

如下图,就是通过Stream API对集合进行了一系列的操作:

11561958-f259298d564b0f4d.png

image.png

而且,Stream还支持并行流,在性能上比传统的for循环要好很多。

从Lambda表达式和Stream API问世至今,已经有6年的时间了,相信很多人已经在工作中使用过这些特性了。

虽然对于这两种语法的使用,很多人持有不同的看法,但是作者还是认为这个功能是十分好用的,只是在日常写代码的时候不要过分"炫技"使用超长的流式操作,代码可读性不要太低就可以了。

新的日期和时间 API

在Java 8之前,日期时间 API 存在诸多问题,如:Date非线程安全、java.util和java.sql的包中都有日期类、日期类并不提供国际化,没有时区支持。

所以,Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。

新的java.time包涵盖了所有处理日期,时间,日期/时间,时区,时刻(instants),过程(during)与时钟(clock)的操作。

常见操作如下:

11561958-b49b5a7a15ca550a.png

image.png

但是说实话,Java8中的时间API作者日常工作中用的比较少,主要是有很多历史代码,还是依赖Date等类型,使用新的API就要面临互相转换问题。

本地变量类型推断

在Java 10之前版本中,我们想定义定义局部变量时。我们需要在赋值的左侧提供显式类型,并在赋值的右边提供实现类型:

11561958-8f989ad4a173b58a.png

image.png

在Java 10中,提供了本地变量类型推断的功能,可以通过var声明变量

11561958-2a9f069a3b3ae424.png

image.png

本地变量类型推断将引入“var”关键字,而不需要显式的规范变量的类型。

其实,所谓的本地变量类型推断,也是Java 10提供给开发者的语法糖。虽然我们在代码中使用var进行了定义,但是对于虚拟机来说他是不认识这个var的,在java文件编译成class文件的过程中,会进行解糖,使用变量真正的类型来替代var

Switch 表达式

在JDK 12中引入了Switch表达式作为预览特性。并在Java 13中修改了这个特性,引入了yield语句,用于返回值。

而在之后的Java 14中,这一功能正式作为标准功能提供出来。

在以前,我们想要在switch中返回内容,还是比较麻烦的,一般语法如下:

11561958-f6c1d4dd09cdeb23.png

image.png

在JDK13中使用以下语法:

11561958-eeb2c861ddedb464.png

image.png

或者

11561958-7081e86e5024ff32.png

image.png

在这之后,switch中就多了一个关键字用于跳出switch块了,那就是yield,他用于返回一个值。和return的区别在于:return会直接跳出当前循环或者方法,而yield只会跳出当前switch块。

Text Blocks

Java 13中提供了一个Text Blocks的预览特性,并且在Java 14中提供了第二个版本的预览。

text block,文本块,是一个多行字符串文字,它避免了对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

最后

看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。

开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题

注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友

最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?

互联网工程师必备的面试1000题

而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题

最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

200道真实出现过的经典代码面试题*。

[外链图片转存中…(img-xdujQn8p-1715628364770)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值