文章目录

  • 1. 接口中的default方法
  • 2. lambda表达式
  • 3. 函数式接口
  • 4. StreamAPI
  • 5. 移出永久代,元空间替换
  • 6. HashMap中的优化
  • 7. currentHashMap的优化

面试总是遇到这个问题,做一个小总结,可能总结的不全

1. 接口中的default方法

一般来说接口中的方法都是不实现的,基本通过实现类来实现方法。但是jdk8中提供了一种被default修饰的方法,可以直接在接口中进行实现。

2. lambda表达式

jdk8引入了lambda表达式,也可称为closure(闭包),通常是在需要一个函数,但又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

由于其几乎被所有主流开发语言支持。是java8新引入的一种语法,是一种紧凑的传递代码的方式。使用lambda表达式可以使代码变的更加简洁紧凑。

3. 函数式接口

函数式接口的引入是为了函数式编程的,函数式编程往往依赖于lambda表达式。

定义函数式接口有两个步骤:

1)确保接口中有且仅有一个抽象方法:
2)使用注解@FunctionalInterface修饰接口

4. StreamAPI

JDK8中引入了StreamAPI,对于学过Flink或Spark的学者应该对此比较熟悉,其实就是类似于一种流式的数据处理,从dataSource到中间的operator操作,再到最后的dataSink。

Stream的中间操作有map,filter等操作。而流式的数据处理往往就是通过函数式编程实现的。

5. 移出永久代,元空间替换

JDK7使用永久代存储类的元数据,JDK8使用元空间存储类的元数据。元空间和永久代都是用来存储class相关信息,包括class对象的Method,Field等,元空间和永久代其实都是方法区的实现,只是实现有所不同,所以说方法区其实只是一种JVM的规范。

区别:
两者最大的区别是元空间使用本地内存,而永久代使用的是JVM的内存。

元空间优势:
优势就是元数据分配只受本地内存大小的限制。本地内存剩余多少理论上metaspace就可以有多大,这解决了空间不足的问题,不过也不可能任其无限壮大,JVM默认在运行时会根据需要动态的设置其大小

6. HashMap中的优化

1)增加红黑树

2)解决jdk1.7多线程下的死循环:

扩容使用尾插法,抛弃头插法

3)rehash的优化:

jdk7扩容的rehash是重新计算桶的位置,而jdk8则进行了优化,不需要进行重新计算。

7. currentHashMap的优化

jdk7是使用分段锁实现线程安全,jdk则使用sy关键字和大量的CAS操作实现。

JDK7和JDK8的区别相关推荐

  1. ConcurrentHashMap原理,jdk7和jdk8的区别

  2. Java之HashMap系列--JDK7与JDK8的HashMap的区别

    原文网址:Java之HashMap系列--JDK7与JDK8的HashMap的区别_IT利刃出鞘的博客-CSDN博客 简介 本文介绍JDK7与JDK8的HashMap的区别. JDK7与JDK8的Ha ...

  3. JDK7与JDK8中HashMap的实现

    JDK7中的HashMap HashMap底层维护一个数组,数组中的每一项都是一个Entry 1 transient Entry<K,V>[] table; 我们向 HashMap 中所放 ...

  4. Java集合:JDK7与JDK8中HashMap的实现

    JDK7中的HashMap HashMap底层维护一个数组,数组中的每一项都是一个Entry transient Entry<K,V>[] table; 我们向 HashMap 中所放置的 ...

  5. 第1篇--基于jdk7和jdk8分析 JVM的内存区域

     基于jdk7和jdk8分析 JVM的内存区域 目录 前言 1.什么是JVM 2.JRE/JDK/JVM是什么关系 3.JVM执行程序的过程 4. JVM的生命周期 5.JVM垃圾回收 一.运行时数据 ...

  6. java 8代码 改 java7_Window安装JDK7和JDK8,并一键切换

    脚本代码:(保存成.bat文件直接运行就可以了.)代码如下: @echo off title 修改JDK mode con cols=35 lines=20 color 3f cd /d " ...

  7. java jdk7,jdk8连接oracle19C数据库ojdbc驱动

    之前程序是连接的oracle11G数据库,由于11G官方不再维护,很多客户升级到了oracle19C, 导致程序连接报错 我这边jdk为1.8 oracle jdbc驱动为 <dependenc ...

  8. 微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java)

    微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java) 使用文章 http://blog.csdn.net/omsvip/article/details/39926493 提供的接入代码 ...

  9. windows同时安装jdk7和jdk8

    有时候某个插件只支持jdk7,而电脑又安装的是jdk8,这时需要卸载jdk8再装jdk7,当想用jdk8时又得切换回去.能不能同时安装jdk7和jdk8呢?当然可以,步骤如下: 1.下载并安装jdk7 ...

  10. 关于Jdk7与Jdk8对Collections进行分组的区别

    先准备一点数据: public class User {     private Integer id;     private String type;     private String nam ...

最新文章

  1. 7个值得推荐的优质软件,让人忍不住体验!
  2. 【效率工具】Linux服务器终端MobaXterm
  3. DPM 2010(三)---Exchange2010单邮箱恢复
  4. ORB-SLAM(四)追踪
  5. 使用C#把Tensorflow训练的.pb文件用在生产环境
  6. linux新建用户不显示,linux系统无法添加用户帐号的原因分析
  7. eggjs增删改查MySQL,nodejs操作mysql实现增删改查
  8. Spring Boot数据持久化之NamedParameterJdbcTemplate
  9. 变成“砖”?旧款 Kindle 因 3G 消失将无法联网
  10. 亲测源码多多进鱼带VUE源码任务悬赏源码活动营销三级分销返佣积分商城版
  11. SBB:替代固氮酶对非共生固氮可能的贡献
  12. 资源共享——FTP服务
  13. 笔记:python基础之内置函数2
  14. DMA+PWM驱动彩色RGB灯
  15. 智能问答(Question Answering)的主要研究方向
  16. 假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含“1”数据位的个数,并将统计结果保存在res1数组中。数据段的代码定义如下: data seg
  17. 用 Python 实现手机自动答题,这下百万答题游戏谁也玩不过我!
  18. 解决jupyter notebook无法跳转浏览器
  19. hexo+yilia主题添加评论
  20. 生命不息,折腾不止—小黑升win10

热门文章

  1. ssm图书馆管理系统
  2. 14、Date and Time (日期和时间)
  3. VectorDraw Web JS 9.9 Crack
  4. matlab云端软件,关于云端软件上安装matlab
  5. Android5.0系统 知识点总结(持续更新)
  6. 抽数,数据抽取,增量数据的抽取方式
  7. 计算机网络第5版答案完整版
  8. 笔记本 续航测试软件,续航能力横评测试
  9. (经典中的经典!)IT学生解惑真经(转),真会有人看完这15万字吗
  10. python实训总结泰坦尼克号重建_Python之泰坦尼克号生存率分析