Java8新特性包含的主要内容
1.Lambda 表达式
2.函数式接口
3.方法引用与构造器引用
4.StreamAPI
5.接口中的默认方法与静态方法
6.新时间日期API
7.其他新特性
新特性简介:
- 速度更快
- 代码更少(lambda 表达式)
- 强大的StreamAPI
- 方便并行
- 最大程度减少空指针异常
两个基础改变:
HashMap的变化:
java7 :数组+链表
存在问题:存在极端情况时,会使效率变得很低
java8: 数组+链表+红黑树
当一个索引处大于8时,会转换成红黑树
除了插入操作变慢外(找合适位置才插入),其他各方面均增强。
(查找时可通过比较是否比根节点大而考虑查找的方向)
内存结构的变化
Java7中
1.方法区是堆中永久区的一部分
2.永久区也会被垃圾回收机制回收,不过条件相对苛刻。
java8中:
1.永久区被删除了
2.方法区从永久区里剥离了出来,成为了元空间
3.方法区用的是物理内存
4.PremGenSize与MaxPremGenSize被删除,用Meta Space与 MaxMetaSpadceSize取代
5.理论上,默认物理内存有多大,元空间就有多大