![](https://i-blog.csdnimg.cn/direct/3d4789832ee74f54b1a52319a92d9a79.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java新特性
Java新特性
morris131
这个作者很懒,什么都没留下…
展开
-
【java10】java10新特性之局部变量类型推断
Java10是Java发布日历中的一个主要版本,它于2018年3月10日发布。在Java10中,Oracle将Java发布节奏更改为新模型,6个月发布节奏和Oracle Java SE产品的LTS模型。LTS模型代表长期支持模型。从Java10开始,Oracle每6个月发布一个新版本的Java,每个版本包含一两个主要功能。Oracle使用版本序列概念。每个发布系列计划为6个月。在此时间线内开发的功能将在发布中发布,否则功能将移至下一个版本系列。原创 2024-05-17 17:28:09 · 16735 阅读 · 0 评论 -
【java10】集合中新增copyof创建只读集合
在Java中,集合(如List、Set、Map等)是编程中常用的数据结构。然而,在某些场景下,我们可能希望集合中的数据是只读的,即不允许修改集合中的元素。在Java8及之前,要实现这样的功能,我们通常需要使用Collections.unmodifiableList()等方法来创建集合的不可修改视图。在Java9中引入了of()方法来创建只读集合,在Java10中引入了copyOf()方法,为我们提供了更简洁、更直观的方式来创建只读集合。原创 2024-05-29 11:02:59 · 11283 阅读 · 0 评论 -
【java11】java11新特性介绍
Java11于2018年9月25日正式发布,Java11是继Java8之后的第一个LTS(Long-Term-Support)长期支持功能版本,与之前的版本(Java9和Java10)不同,它提供了长达3年的维护期,旨在提供稳定且长期的技术支持。Java11的发布也标志着Java版本发布周期的调整,即从原来的每两年发布一个大版本变为每六个月发布一次,其中每年3月和9月为大版本发布节点。Java11的技术支持将持续至2023年9月,而对应的补丁和安全警告等支持将持续至2026年。原创 2024-06-03 14:11:54 · 13453 阅读 · 0 评论 -
【java11】java11新特性之Optional类API改进
Java 11向Optional类引入了新方法isEmpty()来检查值是否存在。如果值存在,则isEmpty()返回false,否则返回true。它可以用作isPresent()方法的替代方法,该方法通常需要否定以检查值是否不存在。原创 2024-06-06 17:42:56 · 8611 阅读 · 0 评论 -
【java11】java11新特性之Predicate接口API改进
Java 11向Predicate接口引入了新方法not()来否定类似于negate方法的现有谓词,进一步增强了其功能,使得条件判断和组合更加灵活和方便。原创 2024-06-06 17:43:59 · 10704 阅读 · 0 评论 -
【java11】java11新特性之文件API改进
Java 11引入了一些新的文件API特性,增强了对文件操作的支持。这些新特性主要集中在java.nio.file包中。原创 2024-06-06 17:41:54 · 11827 阅读 · 0 评论 -
【java11】java11新特性之免编译启动
免编译启动即允许开发者在无需编译的情况下直接运行Java单文件源代码。这一特性极大地简化了开发过程中的某些步骤,特别是对于快速测试代码片段或学习Java语言的初学者来说,更加方便快捷。原创 2024-06-05 14:29:03 · 6942 阅读 · 0 评论 -
【java11】java11新特性之嵌套类
Java 11在嵌套类方面主要关注的是通过JEP 181来改进访问控制,解决之前版本中存在的权限不一致问题。原创 2024-06-06 17:46:42 · 13459 阅读 · 0 评论 -
【java11】java11新特性之局部变量类型推断升级
局部变量类型推断是java10开始新增的新特性,java11中对局部变量推断进行了升级,var支持添加注解的语法格式,Java10中是无法实现的,在Java11中加入了这样的语法。原创 2024-06-03 14:12:54 · 8594 阅读 · 0 评论 -
【java11】java11新特性之增强String的API
Java11在String类上引入了一系列新的API增强,这些改进显著提升了开发者在处理字符串时的便捷性和效率。原创 2024-06-03 14:14:03 · 10204 阅读 · 0 评论 -
【java11】java11新特性之集合转换为数组
Java11引入了一种将带有泛型的集合转换为带有泛型的数组的简单方法。原创 2024-06-05 14:30:43 · 8898 阅读 · 0 评论 -
【java11】java11新特性之标准HttpClient
异步和流式处理:HttpClient支持异步请求和响应,有助于提高性能和效率。它还提供流式处理的能力,可以更有效地处理大量数据。可插拔的身份验证:HttpClient可以轻松实现各种身份验证机制,为应用程序提供更强的安全性。支持WebSocket:HttpClient支持WebSocket通信,使得在Java应用程序中实现实时通信变得更加容易。定制化:HttpClient允许用户根据需要自定义请求和响应的处理方式,提供更大的灵活性。原创 2024-06-03 14:15:16 · 8327 阅读 · 0 评论 -
【java9】java9新特性之接口的私有方法
在Java 9中,接口可以包含私有方法(包括静态私有方法和实例私有方法)。这允许接口的设计者创建一些辅助方法,这些方法只能被接口中的其他方法所使用,而不能被实现该接口的类直接访问。原创 2024-04-26 11:30:13 · 1484 阅读 · 2 评论 -
【java9】java9新特性之增强流Stream的API
Java9为Stream API带来了一系列新特性,这些特性使得流的处理更加灵活和强大。这些新特性为Java的流处理提供了更强大的工具,使得在处理大量数据或进行复杂的数据转换时能够编写更加简洁和高效的代码。它们为开发者提供了更多的控制流生成的灵活性,以及处理流中数据的能力。此外,Java 9还在其他方面对Stream API进行了优化和改进,这些改进可能涉及到性能的提升、API设计的改进以及与其他Java 9特性的更好集成等。原创 2024-04-26 14:44:04 · 18715 阅读 · 0 评论 -
【java9】java9新特性之Optional类改进
其实Optional类在Java8中就引入了,用于避免null检查和NullPointerException指针问题。在Java9中,Optional类得到了进一步的改进,增加了一些新的方法,使其更加灵活和易用。原创 2024-04-28 15:18:43 · 3148 阅读 · 1 评论 -
【java9】java9新特性之多版本共存JAR
多版本共存的JAR(Java Archive)文件是Java 9引入的一个新特性,它允许在同一个JAR文件中维护和使用不同版本的Java类或资源。这种特性使得开发者能够创建一个JAR包,该包可以在多个Java版本上运行,而无需为每个Java版本提供单独的JAR包。接下来这个示例,我们的多版本JAR中有三个版本的MultiJarDemo.java文件,一个用于JDK8,一个用于JDK9,最后一个用于 JDK10,并在可以在这些不同的JDK版本上运行。原创 2024-03-29 15:12:43 · 723 阅读 · 0 评论 -
【java9】java9新特性之try-with-resources语句改进
代码简洁性:使用后,代码更加简洁,去除了冗余的finally块和显式资源关闭代码。错误处理:在之前,如果在finally块中关闭资源时发生异常,可能会掩盖原始异常。使用后,如果有多个资源需要关闭,并且其中某个资源的关闭方法抛出异常,那么该异常会被抑制(suppressed),而原始异常仍然会被抛出。这有助于更好地诊断问题。确保了即使在发生异常的情况下,资源也会被正确关闭。这减少了资源泄露的可能性。可以与多个资源一起使用,只需在try语句的括号中用分号分隔它们即可。这使得管理多个资源变得更加容易。原创 2024-04-26 14:46:06 · 11723 阅读 · 0 评论 -
【java9】java9新特性概述
经过4次的跳票,历经曲折的Java9最终在2017年9月21日发布。因为里面加入的模块化系统,在最初设想的时候并没有想过那么复杂,花费的时间超出预估时间。距离java8大约三年时间。Java9提供了超过150项新功能特性,包括备受期待的模块化系统、可交互的REPL工具:jshell、JDK编译工具、语法层面的改变、Java公共API和私有代码,以及安全增强、扩展提升、性能管理改善等。可以说Java 9是一个庞大的系统工程,完全做了一个整体改变。原创 2024-05-13 17:44:39 · 18166 阅读 · 0 评论 -
【java9】java9新特性之模块化
Java9模块化是Java9版本中引入的一个重要特性,通过Java Platform Module System (JPMS)实现。这个特性允许开发者将大型应用程序拆分成相互独立的模块,每个模块包含一组相关的功能和资源。原创 2024-04-30 11:21:56 · 18238 阅读 · 0 评论 -
【java9】java9新特性之改进JavaDocs
Java9在JavaDocs方面的主要新特性是,其输出现在符合兼容HTML5标准。在之前的版本中,默认的HTML版本是 HTML4.01,但在Java9及之后的版本中,JavaDocs命令行工具将默认使用HTML5作为输出标记语言。这意味着,使用JavaDocs工具生成的文档将具有更现代、更丰富的样式和功能,同时保持与现有HTML5浏览器的兼容性。此外,JavaDocs的输出结构也保持不变,仍然由三个框架组成的结构构成,即使是以HTML5输出的Java帮助文档也保持相同的结构。原创 2024-05-07 20:06:05 · 4082 阅读 · 0 评论 -
【java9】java9新特性之内部类的钻石操作符
在Java中,钻石操作符(diamond operator)是一个语法糖,它用于在实例化泛型类时自动推断类型参数。这个操作符由一对尖括号组成,并且通常里面不留任何内容(即“钻石”为空)。使用钻石操作符可以简化代码,避免冗余的类型参数指定。原创 2024-04-30 15:35:00 · 5359 阅读 · 0 评论 -
【java9】java9新特性之命令行交互式解释器JShell
因为内部方法和内部类的关系,我们还可以在JShell中定义一个方法。原创 2024-02-27 15:41:28 · 1141 阅读 · 1 评论 -
【java9】java9新特性之改进进程管理API
该类在java.lang包中,且处于java.base模块中。ProcessHandle可以用于获取进程信息,监听和检查进程的状态,并且可以监听进程的退出。allProcesses():返回当前进程可见的所有进程的快照current():返回当前进程的ProcessHandle实例of(long pid):返回现有本机进程的Optionalchildren():返回进程的当前直接子进程的快照compareTo(ProcessHandle other):比较两个进程。原创 2024-04-26 14:40:23 · 1154 阅读 · 2 评论 -
【java9】java9新特性之CompletableFuture的新API
CompletableFuture是Java8引入的一个功能强大的类,用于处理异步编程和函数式编程。它提供了许多方法来组合多个异步操作,使得处理异步任务变得更加简单和直观。原创 2024-04-30 10:29:27 · 10014 阅读 · 1 评论 -
【java9】java9新特性之增强@Deprecated注解
@Deprecated注解现在支持一个新的boolean类型参数forRemoval,用于指示该API是否已经过时,并计划在将来的版本中删除。这使得开发人员可以更清晰地了解哪些API是过时的,并且哪些API是可以安全使用的。在Java9中,使用@Deprecated注解的方式与以前的版本相同,但是现在可以使用forRemoval、since和替代建议这些新特性。如果一个程序或代码片段使用了@Deprecated注解的元素,那么编译器就会生成一个警告信息,表明这个元素是不被推荐使用的。原创 2024-04-26 16:44:53 · 14563 阅读 · 2 评论 -
【java9】java9新特性之集合不可变实例工厂方法
Java9为集合接口List、Set、Map提供了创建不可变实例的工厂方法。这些工厂方法为便利而生,以简单的方式创建这些集合的不可变实例。原创 2024-03-29 15:40:00 · 873 阅读 · 0 评论 -
【java9】Java9对InputStream类的改进
Java9在InputStream支持方面进行了一些改进,引入了新的API和功能,以提供更强大、更灵活的IO和网络编程能力。原创 2024-05-08 14:17:34 · 20427 阅读 · 0 评论 -
【java8】Optional的使用
Java8在java.util包中添加了一个新的类Optional。Optional类是一个容器,用于表示可能包含也可能不包含非null值。Optional类提供了许多方法用于处理或,而不是简单的检查空值情况。java.util.Optional类的声明如下注意:该类是一个最终类,不能被继承和扩展。Optional类提供了三个静态方法用于创建Optional类的实例,这三个方法的返回值都是Optional。Optional创建对象的使用:Optional类提供的方法方法说明Opti原创 2022-06-26 11:01:59 · 513 阅读 · 0 评论 -
【java8】静态方法与默认方法
静态方法和默认方法都必须有自己的实现,如果一个类既有静态方法,又有默认方法,还有一个抽象方法,那么它还是一个函数式接口。Java8为接口引入了静态方法功能。静态方法必须有自己的实现,而不能仅仅是一个接口声明,不然编译是会报错的。以前为一个接口编写一个工具类,需另外写一个工具类如XxxUtil,现在可以直接将工具类的方法直接写在接口的静态方法中了。后面我们会看到JDK为我们提供的工具方法大部分都在函数式接口中,如java.util.function.Function。函数式接口Function提供一个抽象方原创 2022-06-28 09:00:00 · 493 阅读 · 0 评论 -
【java8】lambda表达式与匿名内部类
lambda简介Lambda表达式类似匿名函数,简单地说,它是没有声明的方法,也即没有访问修饰符、返回值声明和方法名。Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。Lambda表达式的语法(parameters) -> expression或(parameters) -> { statements; }可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。可选的大括号:如果主体原创 2020-08-07 14:13:01 · 26025 阅读 · 0 评论 -
【java8】时间日期的使用与格式化
LocalTimeLocalDateTimeInstantInstant类用于处理机器可读的时间格式,它将日期时间存储在unix时间戳中。DurationDuration用于表示两个时间之间的差值。PeriodPeriod用于表示两个日期之间的差值。ZoneId方法描述String getDisplayName(TextStyle style,Locale locale)用于获取区域的文本表示形式,例如“北京时间”或者"+08:00"abstract Str原创 2022-06-27 20:00:00 · 2098 阅读 · 0 评论 -
【java8】Stream流对多个字段进行排序
在Java8中,你可以使用Stream接口的sorted()方法来对集合中的元素进行排序。这个方法接受一个Comparator对象作为参数,用于定义排序规则。如果你需要根据多个字段进行排序,你可以链式地调用thenComparing()或thenComparingInt()、thenComparingLong()、thenComparingDouble()等方法。原创 2024-04-30 15:32:20 · 12310 阅读 · 1 评论 -
【java8】自定义Spliterator
Spliterator是Java 8中加入的另一个新接口;这个名字代表“可分迭代器”(splitableiterator)。和Iterator一样,Spliterator也用于遍历数据源中的元素,但它是为了并行执行而设计的。自定义Spliterator需要实现Spliterator接口。T:Spliterator遍历的元素的类型tryAdvance:类似于普通的Iterator,因为它会按顺序一个一个使用Spliterator中的元素,并且如果还有其他元素要遍历就返回true。trySplit:把一些原创 2022-06-28 17:44:37 · 2602 阅读 · 0 评论 -
【java8】并行流Stream
流在处理数据进行一些迭代操作的时候确认很方便,但是在执行一些耗时或是占用资源很高的任务时候,串行化的流无法带来速度/性能上的提升,并不能满足我们的需要。通常我们会使用多线程来并行或是分片分解执行任务,而在Stream中也提供了这样的并行方法,下面将会一一介绍这些方法。使用parallelStream()方法或者是使用stream().parallel()来转化为并行流。但是只是可能会返回一个并行的流,流是否能并行执行还受到其他一些条件的约束(如是否有序,是否支持并行)。对顺序流调用parallel方法并不意原创 2022-06-26 10:48:14 · 3630 阅读 · 0 评论 -
【java8】Stream流
Stream是从某个数据源获得的支持聚合操作的元素序列。名词解释:Java8在推出流的同时,对集合框架也进行了一些比较大变更。主要是在Collection接口上提供了两种生成Stream的方法:流的使用一般包括三件事:迭代流的每个元素。sorted对流中元素进行排序。filter过滤元素。distinct去除重复元素。limit限制返回元素个数。skip跳过前面的元素个数,与limit联合使用可以实现类似sql的分页功能。map可以将流转换成另外一个元素的流。flatMap流的扁原创 2022-06-26 10:09:31 · 1907 阅读 · 0 评论 -
【java8】lambda表达式简介
Lambda表达式类似匿名函数,简单地说,它是没有声明的方法,也即没有访问修饰符、返回值声明和方法名。Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。参数说明:举例说明:Lambda表达式作用域lambda表达式中可以引用任何外部的变量或者常量。但是对这些外部的变量是有要求的:它们必须是Effectively final的。局部内部类和匿名内部类访问的局部变量必须由final修饰,java8开始,可以不加final修饰符,由系统默认添加。java将这个功能称为:Effective原创 2022-06-25 20:23:37 · 381 阅读 · 0 评论 -
【java8】自定义Collector
Collector接口包含了一系列方法,为实现具体的归约操作(即收集器)提供了范本。我们已经看过了Collector接口中实现的许多收集器(由Collector接口的工具类Collectors提供),例如toList()或groupingBy()。这也意味着你可以为Collector接口提供自己的实现,从而自由地创建自定义归约操作。要实现自定义收集器,只需要实现接口即可.Collector接口的声明如下:泛型介绍T:stream在调用collect方法收集前的数据类型A:A是T的累加器,遍历T的时候原创 2022-06-30 08:00:00 · 494 阅读 · 0 评论 -
【java8】函数式接口
有且只包含一个抽象方法的接口,称为函数式接口。可以通过Lambda表达式来创建函数式接口的对象(只有函数式接口才能用Lambda表达式)。可以使用@FunctionalInterface来声明是一个函数式接口。常见的函数式接口:java.lang.Runnable、java.util.Comparator。JDK提供的函数式接口java.util.function包中定义了大量的函数接口,下表列出了这些接口,并对其做一些简单的介绍。...原创 2022-06-26 11:06:00 · 494 阅读 · 0 评论 -
【java12】java12新特性之File的mismatch方法
Java12引入了一个新的方法mismatch,它属于类。此方法用于比较两个文件的内容,并返回第一个不匹配字节的位置。如果两个文件完全相同,则返回-1。原创 2024-06-28 09:47:36 · 11496 阅读 · 0 评论 -
【java12】java12新特性介绍
Shenandoah是Java12引入的一种新的垃圾收集算法,设计目标是保证低延迟,可以将暂停时间控制在10毫秒以内。Shenandoah的特点在于,它可以在整个堆上同时进行垃圾收集,无需在单独的年轻代和老年代之间划分内存。此外,Shenandoah的暂停时间与堆大小无关,意味着无论堆的大小如何,它都能提供稳定的暂停时间。原创 2024-07-09 15:15:50 · 1196 阅读 · 0 评论