java7和java8的区别_面试总结—Java01—Java7和Java8的区别

一般面试官都会问道Java的jdk7和jdk8的区别,这里我大概做了一点总结。自我感觉这几点也是需要重点关注的几点。

JVM的变化

使用Metaspace(JEP 122)代替持久代(PermGen space)。在JVM参数方面,使用-XX:MetaSpaceSize和-XX:MaxMetaspaceSize代替原来的-XX:PermSize和-XX:MaxPermSize。

Java接口提供默认方法和静态方法实现

在java接口中可以使用default关键字来设置接口中的默认方法,默认方法可以有默认实现。

public interface TestInterface{

default String testString() {

return "Default implementation";

}

}

当继承带有默认方法的接口时,默认方法无需重新实现。默认方法和抽象方法的区别也在此,抽象方法必须重新实现。 同时接口可以使用static定义静态方法。

public interface TestInterface{

static String testString() {

return "Static implementation";

}

}

重复注解

自从Java5引入注解以来,支持在一个地方多次使用同一个注解。同时,注解的应用场景也进行拓宽,注解几乎可以使用到任何元素上:局部变量、接口类型、超类、接口实现类、函数异常定义等。

引入解决空指针问题的Optional类

Streams API的引入

这里的的 Stream API是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。

Date/Time API

主要增加以下类:Clock类(使用时区来返回当前的纳秒时间和日期)、LocalDate类(仅仅包含ISO-8601日历系统中的日期部分)、LocalTime类(仅仅包含该日历系统中的时间部分)、LocalDateTime类(包含LocalDate和LocalTime的信息,但是不包含ISO-8601日历系统中的时区信息)、ZoneDateTime类(特定时区的data/time信息)、Duration类(持有的时间精确到秒和纳秒)

Base64

对Base64编码的支持已经被加入到Java 8官方库中。

并行数组

Java8版本新增了很多新的方法,用于支持并行数组处理。最重要的方法是parallelSort(),可以显著加快多核机器上的数组排序。

Lambda表达式

由于本人不太喜欢->这种不是很明确的代码表达方式,所以一般不使用Lambda表达式。所以也不喜欢Scala代码。但是我们不能限制别人的自由,所以建议参考文档,学习一下Java对Lambda表达式的支持。

对部分类部分方法进行优化

如:HashMap在jdk8中加入红黑树、ConcurrentHashMap加锁方式改为CAS+Synchronized等。

参考链接:

欢迎关注个人公众号:

up-95eda4227a45fdbf2aaa71e5c604b182301.bmp

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值