JDK1.8的一些新特性

概述

我觉得oracle是一个丧心病狂的公司,jdk的版本更新频率从最开始几年更新一次,大家都求着他更新,到后来两年一个版本,再到现在半年一次,虽然说现在已经更新到jdk12了,但是我相信大多数企业仍然使用的是jdk1.8的版本,甚至更有一些还在用1.6等等,所以我简单梳理了一下jdk1.8的一些新特性以及他的用法和作用。

default关键字

在jdk1.8以前,接口里面只能是抽象的方法,不能有具体的实现,但是jdk1.8引入了default关键字之后打破了这个规则,使用default关键字修饰方法,可以让我们在接口里面定义具体方法的实现,比如在一个接口里面定义两个方法,用default修饰,并新建一个类,实现这个接口,在实现类里面就不需要重写接口内default修饰的方法,可以选择实现,也可以不实现,如果实现的话,子类就覆盖了该方法,遵循java多态特性。

lambda表达式

jdk1.8之后引入了函数式编程,函数式编程是一种抽象度极高的编程范式,纯粹的函数式编程是没有变量的,输入和输入都是确定的,而允许变量的程序设计语言,由于变量状态的不确定,会导致同样输入返回不同结果,因此在jdk1.8中,把函数本身作为一种参数传递到另一个函数,允许返回另一个函数,极大简化代码开发,例如for Each遍历、多线程应用、数据过滤等等。

hashmap数据结构优化

hashmap,作为最常用的一个类,有些什么特性大家都很清楚,如果不了解可以去看看我之前的博客,关于hashmap的储存原理,在jdk1.8中,对于hashmap进行了结构优化,jdk1.8之前,hashmap是数据加链表构成,默认16,0-15索引的数组,通过hashcode计算哈希码值来储存或者获取元素,在相同位置再通过equals方法比较内容,相同覆盖,不同则以链表形式挂接起来,但是这样如果链表越长,效率就会越来越低且无法避免hash冲突(两个元素通过hash函数算出来的值一样,同一个存储地址,当后面元素存入这个地址时,发现被占用,产生hash冲突),而在1.8之后,通过数组加链表加红黑树来实现hashmap,当hashmap链表长度大于8的时候,便由链表转为红黑树,好处是之前equals比较解决冲突,链表过长效率低,转为红黑树,性能得到极大优化,时间复杂度下降一个档次

Date api更新

jdk1.8以前自带的时间处理类不好用,用起来非常麻烦,通常是引入第三方包来解决时间问题,比如commons-lang,而在1.8之后,时间的各种处理,包括创建、调整、格式化、比较等等都集中在java.time包下,比如:
1.LocalDate为日期处理类,LocalTime为时间处理类,LocalDateTime为日期时间处理类
2.TemporalAdjusters类用于获取月、年、周第一天,最后一天,下一周第一天等等
3.jdk1.8中引入了DateTimeFormatter类,定义了许多常量格式,算的上是之前DateTimeFormat的加强版,更加好用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值