
JDK新特性
文章平均质量分 92
介绍jdk新特性
爱吃牛肉的大老虎
学无止境,既要有深度又要有广度地学习
展开
-
JDK8之LocalDateTime讲解
是Java 8中日期时间API提供的一个类,在日期和时间的表示上提供了更加丰富和灵活的支持。类相比于早期的Date和Calendar丰富的日期时间类型支持类封装了LocalDate和LocalTime两个类,支持更加细化的日期时间操作,例如获取某一天的开始和结束时间、获取某个时间段内的所有日期等。线程安全性类是不可变对象,线程安全性较高,可以在多线程环境下安全使用。时区支持类在处理时区相关的操作时有着很好的支持,例如可以将一个对象转换成对象,以支持更加复杂的时区计算。类的实现原理是基于Java的时间。原创 2024-02-22 14:42:41 · 1156 阅读 · 0 评论 -
JDK19特性之虚拟线程
在读《深入理解JVM虚拟机》这本书前两章的时候整理了JDK从1.0到最新版本发展史,其中记录了JDK这么多年来演进过程中的一些趣闻及引人注目的一些特性,在调研JDK19新增特性的时候了解到了虚拟线程这个概念,于是对虚拟线程进行学习整理内容如下。虚拟线程(Virtual Threads)就犹如名字一样,并非传统意义上的JAVA线程。传统意义上的JAVA线程(以下称为平台线程)跟操作系统的内核线程是一一映射的关系(如下图所示)。而对于平台线程的创建和销毁所带来的开销是非常大的,所以JAVA采用线程池。转载 2023-10-10 09:49:48 · 278 阅读 · 0 评论 -
Stream之实现原理分析
执行的时候,会回溯peek操作,然后peek会回溯更上一步的skip操作,skip回溯到上一步的peek操作,顶层没有操作了,开始自上向下开始执行,执行到skip的时候,因为执行到skip,这个操作的意思就是跳过,下面的都不要执行了,也就是就相当于循环里面的continue,结束本次循环。当第四次forEach执行的时候,然后会回溯peek 操作,然后peek会回溯更上一步的limit操作,到limit的时候,发现limit(3)这个job已经完成,这里就相当于循环里面的break操作,跳出来终止循环。原创 2023-09-18 09:52:59 · 512 阅读 · 0 评论 -
jdk8之Optional类判空处理
Opitonal类就是Java提供的为了解决大家平时判断对象是否为空用,通常会用null!=obj这样的方式存在的判断,从而令人头疼导致空指针异常,同Optional的存在可以让代码更加简单,可读性跟高,代码写起来更高效return student为null;return Optional.ofNullable(student).orElse(student为null);测试展示类Student代码@Data。原创 2023-09-17 18:11:58 · 446 阅读 · 0 评论 -
Java多线程之CompletableFuture
文章目录1 CompletableFuture1.1 简介1.2 创建CompletableFuture1.2.1 构造函数创建1.2.2 supplyAsync创建1.2.3 runAsync创建1.3 异步回调方法1.3.1 thenApply / thenAccept / thenRun互相依赖1.3.1.1 thenApply1.3.1.2 thenAccept / thenRun1.3.2 exceptionally有返回1.3.3 whenComplete无返回1.3.4 handle有返回1.转载 2022-04-28 21:13:54 · 26862 阅读 · 2 评论 -
JAVA9~16新功能概述
文章目录1 JDK新特性1.1 概述1.2 JAVA 9(2017年9月)1.2.1 接口里可以添加私有方法1.2.3 匿名内部类支持钻石运算符1.2.4 增强的try-with-resources1.3 JAVA 10(2018年3月)1.3.1 局部变量的自动类型推断1.4 JAVA 11(2018年9月)1.4.1 Lambda中的自动类型推断1.4.2 javac + java 命令一把梭1.4.3 Java Flight Recorder登陆OpenJDK1.5 JAVA 12(2019年3月)1转载 2021-08-30 20:39:13 · 454 阅读 · 0 评论 -
Java 8 Stream实例分析
文章目录1 steam大致使用2 集合创建2.1 Collection.stream()2.2 Arrays.stream(T[] array)2.3 Stream静态方法2.4 stream和parallelStream区别3 stream实例3.1 遍历/匹配(foreach/find/match)3.2 筛选(filter)3.3 聚合(max/min/count)3.4 映射(map/flatMap)3.5 归约(reduce)3.6 收集(collect)3.6.1 归集(toList/toSet转载 2021-04-25 16:57:08 · 366 阅读 · 0 评论 -
List集合之元素和对象去重
文章目录1 使用的实体类2 利用Collectors.toMap去重2.1 toMap去重说明2.2 Funcion.identity()解释3 利用Collectors.toCollection和TreeSet去重1 使用的实体类@Data@NoArgsConstructor@AllArgsConstructor@Stringpublic class User(){ private String userId; private String userName; private Integ原创 2019-12-24 16:07:52 · 13797 阅读 · 4 评论 -
jdk9之模块化系统
文章目录1 实例1.1 使用命令行编写和运行模块程序1.1.1 设置目录1.1.2 编写源代码1.1.3 编译1 实例如何使用模块–从编写源代码到编译,打包和运行程序。1.1 使用命令行编写和运行模块程序1.1.1 设置目录使用如下目录层次结构来编写,编译,打包和运行源代码:src目录用于保存源代码,其中包含一个com.jdk9.m的子目录,并且创建一个同名的com.jdk9.m模...原创 2019-11-23 14:52:23 · 1287 阅读 · 0 评论 -
java8里面lambda的stream()用法讲解
jdk8引进来的lambda语法是新语法,里面融进了python和c#的部分语法,stream()函数是主要用于集合而言的,对于数组就没效果生成流函数 把集合装成流,可以多次使用这个集合,但是不转换流的话,只能用一次,这就是转换成流的好处 stream()− 为集合创建串行流。 paralle...原创 2018-07-19 10:45:30 · 8977 阅读 · 0 评论 -
jdk9,10,11,12没有jre安装方法
众所周知,在jdk1.8之后,就不在提供jre了,即使安装后也会报一个没有jre的错误,这时候可以使用jdk1.8稳定版里面带的jre,或者使用cmd命令自己生成jre。使用jdk安装可以使用.exe文件,也可以使用.zip文件,不过最后都是会生成一个没有jre文件夹的文件夹,如图:这时候在DOS窗口里面,切换到bin当前文件夹同级,例如:D:\SoftWare-NeedSoft...原创 2019-06-03 18:23:39 · 13554 阅读 · 2 评论 -
java8里面lambda的函数式接口用法讲解
目录1 函数式接口DEMO2 自定义加注解的方式3 官网提供的可以直接使用的函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式。Lambda 表达式和方法引用(实际上也可认为是Lambda表达式)上。1 函数式接口DEMOpublic class List...原创 2019-09-07 11:45:03 · 690 阅读 · 1 评论