Java8专题一《为什么要关心Java8》

本章内容1、Java怎么又变了?2、我们为什么要继续学习Java8?3、Java8到底有哪些改变?在开讲Java8专题前,我先带大家非常简略的了解一下关于2019年编程语言排行榜的情况,该内容来自Tiobe发布2019年3月编程语言排行榜:图1-12019年3月编程语言排行榜TOP5几乎没有变化,Java和C语言牢牢占据前两名。看完这张图,身为Java程序员...
摘要由CSDN通过智能技术生成

本章内容

1、Java怎么又变了?

2、我们为什么要继续学习Java8?

3、Java8到底有哪些改变?

在开讲Java8专题前,我先带大家非常简略的了解一下关于2019年编程语言排行榜的情况,该内容来自Tiobe发布2019年3月编程语言排行榜

 图1-1 2019年3月编程语言排行榜

TOP5几乎没有变化,Java和C语言牢牢占据前两名。

看完这张图,身为Java程序员的小伙伴们内心肯定是狂喜的吧~心里默默的慷慨一句Java就是世界上最好的编程语言,不接受任何反驳!

那小编有点好奇,Java到底依靠什么可以排列前茅呢?

1、Java为什么又变了?

试问大家,一个怎样的语言可以吸引你,换句话说你期待一个怎样的编程语言呢?

我自己的答案是:那它必须是功能强大、使用简便,并且足够的稳定。

当今是一个充满竞争力的社会,想做到一步到位、一劳永逸真的太难了!你看看你的身边,你手机/电脑是否经常提醒你更新系统?你常使用的支付宝、淘宝等app是否总是提醒你更新最新版本?你用的手机/电脑等设备是否还在不停的更新款式?

所以,语言也需要不断改进以跟进硬件的更新或满足程序员的期待。


2、我们为什么要继续学习Java8?

及时Java11已经即将发布,但是我们目前使用最多的还是Java8,因为对于一个程序员来说,我们不追求技术的新,我们追求的是技术的稳定性。

我们需要思考一下,java的改进与java程序员之间有什么关系?

对Java而言:java必须通过添加新功能来改进,并且新功能被人使用,变化才有意义。

对我们而言:作为一个Java程序员,如果Java因功能太过老旧等原因,被其他编程语言完全替代了,那么也就意味着你的职业生涯也结束了。

所以学习java8就是在保护你作为Java程序员的职业生涯。


3、Java8到底有哪些改变?

1、速度更快

如果你的开发环境装的就是java8,那么你就已经在无形中享用Java8的新特性了。

java8对于底层的数据结构上做了些更新和改动,对垃圾回收机制(内存结构)也做了一定的改变,以及对于并行/并行流,并行的操作能够很容易的进行使用,对并行做了一些扩展和支持。

我们一起了解一下它是怎么让底层的数据结构“速度更快”呢?我们都知道底层数据结构最核心的一个就是HashMap,那么它对HashMap做了怎样的改动呢?

原来的HashMap是怎样的呢?(数组+链表)

1.8之后的HashMap是怎样的呢?(数组+链表+红黑树)HashMap1.8源码分析

当链表长度太长(默认超过8)时,链表就转换为红黑树。红黑树的改进解决了什么问题呢?

HashMap碰撞处理的优化,针对超长链的检查,时间复杂度从O(n)降到了O(log2n)

2、代码更少/清晰

我希望可以通过代码对比的形式将其改变展示出来

业务需求:因为发消息是分组发送的,现需要计算出各个小组需要发送消息的总数。

解决步骤:

1、首先遍历出有哪些小组

2、根据小组遍历出所有消息列表

3、遍历每个小组的消息数据

4、获取符合发送消息条件的数据,Count+1

最终获取到各个小组需要发送消息的总数。

图1-2使用常规for循环解决问题,案例1-3使用Java8的Stream解决问题;

 图1-2 for循环

 图1-3 java8的stream 

如图1-2使用的是常规的for循环遍历解决方法,如图1-3使用的java8 Stream API

你对这两段段代码对比起来看有何不同呢?

是否有种层次更加明确,代码更少的感觉?

若你认为变化的不够明显。我再划分一下该段代码的层次

如图1-4所示, 仍可以实现该业务:

图1-4 java8的stream

代码是否简单明了?

1、隐式的遍历groupId

2、获取每个组的count值

3、将count值进行累加求合

这是否像是我们写的SQL语句呢?

图1-5 根据groupId获取count

Java8主要内容:

1、Lambda表达式

2、函数式接口

3、方法引用与构造器引用

4、Stream API

5、接口中的默认方法和静态方法

6、新时间日期API

7、其他新特性呢

Java8新特性简介:

速度更快,代码更少(增加了新的语法Lambda表达式),强大的Stream API,便于并行,最大化减少空指针异常 Optiona。

其中最为核心的为Lambda 表达式和Stream API


4、专题大纲

函数式数据处理

默认方法

新的日期和时间API

Optional代替null

CompletableFuture,声明性方式表达复杂的异步计算

希望大家可以继续关注我的Java8专题哦~

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值