JavaJDK8新特性相关知识整理
1、新增接口默认方法和接口静态方法
接口默认方法用default关键字修饰,与抽象方法不同之处在于抽象方法必须要求实现,而默认方法没有这个要求,默认方法本身已经有具体的实现,所有的接口实现类将会默认继承它,也可以覆盖这个默认实现。
private interface Defaulable { // Interfaces now allow default methods, the implementer may or// may not implement (override) them.default String notRequired() {return "Default implementation";} } private static class DefaultableImpl implements Defaulable { }private static class OverridableImpl implements Defaulable { @Overridepublic String notRequired() {return "Overridden implementation";} }
接口静态方法用static关键字修饰,有具体的方法实现。
public interface StaticInterface {static void method() {System.out.println("这是Java8接口中的静态方法!");} }public class Main {public static void main(String[] args) {StaticInterface.method(); // 输出 这是Java8接口中的静态方法! } }
2、Lambda表达式
Lambda表达式允许把函数作为方法的参数,由逗号分隔的参数列表、->符号和函数体三部分组成
对比使用非Lambda与使用Lambda实现
public class Test2 {public static void main(String[] args) {List<String> names = Arrays.asList("张三","李四","王五","赵六");//非Lambda表达式实现排序Collections.sort(names,new Comparator<String>() {@Overridepublic int compare(String a, String b) {return b.compareTo(a);}});//Lambda表达式实现排序Collections.sort(names,(a,b)->b.compareTo(a));System.out.println(names.toString());}}
3、函数式接口
函数式接口指只有一个函数的接口,使用@FunctionallInterface注解来表明该接口是一个函数式接口。java.lang.Runable和java.util.concurrent.Callable就是函数式接口的例子
使用非Lambda创建线程:
//通过匿名内部类来创建线程Thread thread1 = new Thread(new Runnable() {@Overridepublic void run() {int a = 0;for(long i = 0; i < count; i++) {a += 1;}} });
使用Lambda表达式创建线程
//通过Lambda表达式创建线程Thread thread2 = new Thread(()->{int a = 0;for(long i = 0; i < count; i++) {a += 1;}});
4、HashMap的底层实现由原来的数组+链表实现改为数组+链表+红黑树实现
5、JVM内存管理方面,由元空间代替了永久代
6、新增java.time包
包含了所有关于日期、时间、时区、持续时间和时钟操作的类,这些类都是不可变的,线程安全
7、引入重复注解@Repeatable
转载于:https://www.cnblogs.com/conswin/p/10395624.html
JavaJDK8新特性相关知识整理相关推荐
- JDK8新特性相关知识讲解汇总
以下是博主本人对jdk8相关新知识的学习以及讲解的汇总,如果对你帮助可以多多点赞和关注我哦~ (1)JDK8新特性-Lambda表达式详细介绍以及应用 (2)JDK8 关于中断线程的总结 (3)JDK ...
- Redis面试题相关知识整理
Redis面试题相关知识整理 1.Redis的应用场景 2.Redis的特点 3.Redis对各种数据类型的操作 4.Redis的持久化机制 5.Redis的缓存穿透/缓存击穿/缓存雪崩问题 6.Re ...
- keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc...
Keil软件"C语言"与"汇编"混编 相关知识整理 用Keil在C中嵌入汇编1 在Keil中嵌入汇编2 介绍直接嵌入汇编代码的方法4 采用汇编可能会有的好处5 ...
- MySQL索引相关知识整理学习
MySQL索引相关知识整理学习 前言 一.MySQL索引 哈希索引 B+树索引 B+树的优点 聚簇索引 非聚簇索引 聚簇索引和非聚簇索引的特点及区别: 二.特殊类型的索引 1.覆盖索引 2.联合索引 ...
- keil c语言pdf,Keil软件“C语言”与“汇编”混编 —— 相关知识整理.pdf
Keil软件"C语言"与"汇编"混编 -- 相关知识整理.pdf Keil 软件软件C 语言语言与与汇编汇编混编混编 相关知识整理相关知识整理 用 Keil 在 ...
- 【转】医学影像处理相关知识整理(一)
转自:医学影像处理相关知识整理(一) - 知乎 Segmentation to RT structure 近日做医疗影像处理相关的内容,感慨于这方面资料不全.散碎,遂记录自己获得的一些资料以供日后查阅 ...
- android 最全 图片相关知识整理
android 最全 图片相关知识整理 图片基础知识梳理 图片基础知识梳理(1) - ImageView 的 ScaleType 属性解析 图片基础知识梳理(2) - Bitmap 占用内存分析 图片 ...
- 数据库:MySQL相关知识整理,值得收藏!
一.数据库引擎 选择:MyISAM相对简单,所以在效率上要优于InnoDB.如果系统插入和查询操作多,不需要事务和外键,选择MyISAM,如果需要频繁的更新.删除操作,或者需要事务.外键.行级锁的时候 ...
- [转]ES6、ES7、ES8、ES9、ES10新特性一览 (个人整理,学习笔记)
目录 1.ES6新特性(2015) 1.1模块化(Module) 1.1.1导出(export) 1.1.2导入(import) 1.2箭头(Arrow)函数 1.2.1箭头函数的结构 1.3默认参数 ...
最新文章
- SAP PM整修流程
- pdf.js 在线阅读PDF
- [转载]如何编写无法维护的代码(3)
- java putall实现,Java EnumMap putAll()
- 【转】为什么螺丝都是六角的?
- 2017年12月计算机一级c,2017年12月计算机二级C语言考试操作题冲刺卷(2)
- IMPORTANT: BizTalk Server 2004 fixes for Windows XP SP2 and .NET FW 1.1 SP1
- 目标赋予生命的意义和目的
- 【073】Android 数据存储(SQLite)
- 通过追女孩时的常见对话来看你会不会聊天
- LeetCode.868-二进制距离(Binary Gap)
- p标签中的文字垂直居中
- Scratch 飞机对战
- 计算机字体在哪里调整,电脑字体太小怎么调 电脑字体调整方法【图文】
- 三维地图之Google earth安装使用
- 该应用非官方正版应用,请去应用宝下载正版后进行qq登陆。(错误码:100044)
- 大一计算机应用基础学什么,2017大学计算机应用基础试题
- 蓝桥杯单片机选择器和锁存器
- 小写金额转换为人民币大写
- 如何做好开始游戏选择英雄界面[不是标题党]
热门文章
- 重磅更新!YoloV4最新论文!解读yolov4框架
- 【TensorFlow】TensorFlow函数精讲之 tf.random_normal()
- 厉害了!牛顿法深度学习优化器,效果比肩SGD和Adam
- 2018 年度人工智能热门事件大盘点:「悲喜交加」
- 国土空间规划基数转换初探
- java 事件分发机制_用两段代码带你看懂事件分发机制
- java软件架构设计方案_Java软件架构设计慨论
- python的for语句写新的字符串_Python:for循环遍历对象,而不是字符串
- oracle12cr2发布时间,Oracle 12cR2 发布在即
- 用位运算将十进制转为二进制python_python 十进制与二进制以及位运算