Java新特性
文章平均质量分 69
Java新特性
morris131
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【java21】java21新特性之记录模式
记录模式是Java语言中的一个新特性,旨在简化和标准化对记录类实例的解构,允许程序员更加方便、安全地访问和操作记录类的组件。记录类本身是在Java 14中引入的,作为一种简化不可变数据类定义的方式。记录模式通过编译时检查确保访问的正确性,避免错误的字段访问或类型不匹配问题,并使代码更加简洁明了。原创 2024-10-12 10:49:51 · 13565 阅读 · 0 评论 -
【java21】java21新特性之顺序集合
Sequenced Collections是一种新的集合类型,它提供了一个统一的接口来表示具有定义好的出现顺序的集合。每个Sequenced Collection都有一个明确定义的第一个元素、第二个元素,依此类推,直到最后一个元素。它还提供了一套统一的API来访问集合的第一个和最后一个元素,并以相同的顺序处理集合中的元素。有序性:每个Sequenced Collection都保持元素插入的顺序。原创 2024-10-12 10:48:29 · 53950 阅读 · 0 评论 -
【java21】java21新特性之虚拟线程
Java21中引入的虚拟线程(Virtual Threads)是一项重要的新特性,它为Java并发编程带来了革命性的改进。虚拟线程,也称为用户模式线程(user-mode threads)或纤程(fibers),是Java21中引入的一种轻量级线程实现方式。这一特性旨在简化并发编程,提供更好的可扩展性,并大幅提升Java的并发能力。随着企业应用的规模不断壮大,大量的网络请求或读写I/O场景越来越多,虚拟线程的引入对于I/O密集型程序的性能带来了大幅度的提升。原创 2024-10-08 10:44:48 · 8247 阅读 · 0 评论 -
【java21】java21新特性之switch模式匹配
在Java18之前,模式匹配只能使用在if语句中,而在Java18及更高版本中,switch语句支持类型模式的匹配。这意味着开发者可以直接在case标签中匹配对象的类型,而无需在case语句内部进行显式的类型检查和转换。例如,可以直接匹配并处理Integer、String等类型的对象。原创 2024-10-08 10:34:41 · 10491 阅读 · 0 评论 -
【java21】java21新特性之JavaDoc中支持代码片段
在Java18之前,已经支持在JavaDoc中引入代码片段,这样可以在某些场景下更好的展示描述信息,但是之前的支持功能有限,比如我想高亮代码片段中的某一段代码是无能为力的。现在Java18优化了这个问题,增加了@snippet来引入更高级的代码片段。原创 2024-09-24 16:33:34 · 7318 阅读 · 0 评论 -
【java21】java21新特性之简单的Web服务器jwebserver
jwebserver是Java 18中引入的一个全新功能点,它允许用户通过命令行工具快速启动一个提供静态资源访问的迷你Web服务器。Java18中的jwebserver是一个实用且易于使用的静态Web服务器,它为开发者提供了一个便捷的测试和教育工具。尽管其功能相对简单,但在特定场景下(如快速测试静态页面)却非常有用。其实在如Python、Ruby、PHP、Erlang等许多语言都提供了开箱即用的Web服务器,可见一个简单的Web服务器是一个常见的需求,Java一直没有这方面的支持,现在可以了。原创 2024-09-24 16:31:40 · 32535 阅读 · 0 评论 -
【java21】java21新特性之默认UTF-8字符编码
在Java18之前,Java平台的默认字符集由主机操作系统和语言环境决定,这导致了跨平台应用中字符集不一致的问题。Java18将UTF-8设置为默认字符集,这一改变简化了文本处理,并避免了因地区设置不同而可能导致的乱码问题。由于默认使用UTF-8编码,Java 18简化了跨平台开发过程,减少了因字符集不一致而导致的错误和复杂性。开发者不再需要显式地设置文件编码或命令行参数来确保正确的字符编码,这提高了开发效率。原创 2024-09-23 11:08:02 · 1035 阅读 · 0 评论 -
【java17】java17新特性之Stream.toList()
UnmodifiableList是Java中的一个类,用于创建不可修改的列表。它实际上是通过Collections.unmodifiableList()方法创建的。一旦列表被创建为不可修改的,就无法对其进行添加、删除或修改元素的操作。这种列表对于保护数据不被意外修改或者共享数据而不希望被修改很有用。当你想要确保某个列表在传递给其他代码时不会被修改时,可以使用UnmodifiableList来包装你的列表。原创 2024-09-23 09:15:25 · 1246 阅读 · 0 评论 -
【java17】java17新特性之日期周期格式化
在Java 17中,确实引入了新的日期时间格式化模式,即模式字母 B,它用于表示一天中的时间段,如上午或下午。这个模式是根据Unicode标准CLDR(Common Locale Data Repository)来定义一天中的时间段的,它可以输出如“上午”、“下午”、“晚上”等时间段标识。可见咱们的晚上是包括英美国家的evening和night的。在英语语言环境下,设置。在中文语言环境下,设置。原创 2024-08-27 15:30:35 · 22292 阅读 · 1 评论 -
【java17】java17新特性之空指针友好提示
在Java 17及之前的版本中,关于空指针异常(NullPointerException)的友好提示主要依赖于开发者在编写代码时的注意和检查,而不是Java语言本身直接提供的特性。然而,从Java 14开始,Java平台引入了一些改进,旨在使空指针异常(NPE)的调试变得更加容易,这可以视为一种“友好提示”的间接实现。原创 2024-08-27 15:29:22 · 1066 阅读 · 0 评论 -
【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 · 16923 阅读 · 0 评论 -
【java10】集合中新增copyof创建只读集合
在Java中,集合(如List、Set、Map等)是编程中常用的数据结构。然而,在某些场景下,我们可能希望集合中的数据是只读的,即不允许修改集合中的元素。在Java8及之前,要实现这样的功能,我们通常需要使用Collections.unmodifiableList()等方法来创建集合的不可修改视图。在Java9中引入了of()方法来创建只读集合,在Java10中引入了copyOf()方法,为我们提供了更简洁、更直观的方式来创建只读集合。原创 2024-05-29 11:02:59 · 11612 阅读 · 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 · 14133 阅读 · 0 评论 -
【java11】java11新特性之Optional类API改进
Java 11向Optional类引入了新方法isEmpty()来检查值是否存在。如果值存在,则isEmpty()返回false,否则返回true。它可以用作isPresent()方法的替代方法,该方法通常需要否定以检查值是否不存在。原创 2024-06-06 17:42:56 · 8856 阅读 · 0 评论 -
【java11】java11新特性之Predicate接口API改进
Java 11向Predicate接口引入了新方法not()来否定类似于negate方法的现有谓词,进一步增强了其功能,使得条件判断和组合更加灵活和方便。原创 2024-06-06 17:43:59 · 11035 阅读 · 0 评论 -
【java11】java11新特性之文件API改进
Java 11引入了一些新的文件API特性,增强了对文件操作的支持。这些新特性主要集中在java.nio.file包中。原创 2024-06-06 17:41:54 · 12246 阅读 · 0 评论 -
【java11】java11新特性之免编译启动
免编译启动即允许开发者在无需编译的情况下直接运行Java单文件源代码。这一特性极大地简化了开发过程中的某些步骤,特别是对于快速测试代码片段或学习Java语言的初学者来说,更加方便快捷。原创 2024-06-05 14:29:03 · 7380 阅读 · 0 评论 -
【java11】java11新特性之嵌套类
Java 11在嵌套类方面主要关注的是通过JEP 181来改进访问控制,解决之前版本中存在的权限不一致问题。原创 2024-06-06 17:46:42 · 13940 阅读 · 0 评论 -
【java11】java11新特性之局部变量类型推断升级
局部变量类型推断是java10开始新增的新特性,java11中对局部变量推断进行了升级,var支持添加注解的语法格式,Java10中是无法实现的,在Java11中加入了这样的语法。原创 2024-06-03 14:12:54 · 8826 阅读 · 0 评论 -
【java11】java11新特性之增强String的API
Java11在String类上引入了一系列新的API增强,这些改进显著提升了开发者在处理字符串时的便捷性和效率。原创 2024-06-03 14:14:03 · 10796 阅读 · 0 评论 -
【java11】java11新特性之集合转换为数组
Java11引入了一种将带有泛型的集合转换为带有泛型的数组的简单方法。原创 2024-06-05 14:30:43 · 9202 阅读 · 0 评论 -
【java11】java11新特性之标准HttpClient
异步和流式处理:HttpClient支持异步请求和响应,有助于提高性能和效率。它还提供流式处理的能力,可以更有效地处理大量数据。可插拔的身份验证:HttpClient可以轻松实现各种身份验证机制,为应用程序提供更强的安全性。支持WebSocket:HttpClient支持WebSocket通信,使得在Java应用程序中实现实时通信变得更加容易。定制化:HttpClient允许用户根据需要自定义请求和响应的处理方式,提供更大的灵活性。原创 2024-06-03 14:15:16 · 9130 阅读 · 0 评论 -
【java9】java9新特性之接口的私有方法
在Java 9中,接口可以包含私有方法(包括静态私有方法和实例私有方法)。这允许接口的设计者创建一些辅助方法,这些方法只能被接口中的其他方法所使用,而不能被实现该接口的类直接访问。原创 2024-04-26 11:30:13 · 57455 阅读 · 2 评论 -
【java9】java9新特性之增强流Stream的API
Java9为Stream API带来了一系列新特性,这些特性使得流的处理更加灵活和强大。这些新特性为Java的流处理提供了更强大的工具,使得在处理大量数据或进行复杂的数据转换时能够编写更加简洁和高效的代码。它们为开发者提供了更多的控制流生成的灵活性,以及处理流中数据的能力。此外,Java 9还在其他方面对Stream API进行了优化和改进,这些改进可能涉及到性能的提升、API设计的改进以及与其他Java 9特性的更好集成等。原创 2024-04-26 14:44:04 · 19534 阅读 · 0 评论 -
【java9】java9新特性之Optional类改进
其实Optional类在Java8中就引入了,用于避免null检查和NullPointerException指针问题。在Java9中,Optional类得到了进一步的改进,增加了一些新的方法,使其更加灵活和易用。原创 2024-04-28 15:18:43 · 3546 阅读 · 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 · 29641 阅读 · 0 评论 -
【java9】java9新特性之try-with-resources语句改进
代码简洁性:使用后,代码更加简洁,去除了冗余的finally块和显式资源关闭代码。错误处理:在之前,如果在finally块中关闭资源时发生异常,可能会掩盖原始异常。使用后,如果有多个资源需要关闭,并且其中某个资源的关闭方法抛出异常,那么该异常会被抑制(suppressed),而原始异常仍然会被抛出。这有助于更好地诊断问题。确保了即使在发生异常的情况下,资源也会被正确关闭。这减少了资源泄露的可能性。可以与多个资源一起使用,只需在try语句的括号中用分号分隔它们即可。这使得管理多个资源变得更加容易。原创 2024-04-26 14:46:06 · 12141 阅读 · 0 评论 -
【java9】java9新特性概述
经过4次的跳票,历经曲折的Java9最终在2017年9月21日发布。因为里面加入的模块化系统,在最初设想的时候并没有想过那么复杂,花费的时间超出预估时间。距离java8大约三年时间。Java9提供了超过150项新功能特性,包括备受期待的模块化系统、可交互的REPL工具:jshell、JDK编译工具、语法层面的改变、Java公共API和私有代码,以及安全增强、扩展提升、性能管理改善等。可以说Java 9是一个庞大的系统工程,完全做了一个整体改变。原创 2024-05-13 17:44:39 · 18371 阅读 · 0 评论 -
【java9】java9新特性之模块化
Java9模块化是Java9版本中引入的一个重要特性,通过Java Platform Module System (JPMS)实现。这个特性允许开发者将大型应用程序拆分成相互独立的模块,每个模块包含一组相关的功能和资源。原创 2024-04-30 11:21:56 · 19378 阅读 · 0 评论 -
【java9】java9新特性之改进JavaDocs
Java9在JavaDocs方面的主要新特性是,其输出现在符合兼容HTML5标准。在之前的版本中,默认的HTML版本是 HTML4.01,但在Java9及之后的版本中,JavaDocs命令行工具将默认使用HTML5作为输出标记语言。这意味着,使用JavaDocs工具生成的文档将具有更现代、更丰富的样式和功能,同时保持与现有HTML5浏览器的兼容性。此外,JavaDocs的输出结构也保持不变,仍然由三个框架组成的结构构成,即使是以HTML5输出的Java帮助文档也保持相同的结构。原创 2024-05-07 20:06:05 · 4258 阅读 · 0 评论 -
【java9】java9新特性之内部类的钻石操作符
在Java中,钻石操作符(diamond operator)是一个语法糖,它用于在实例化泛型类时自动推断类型参数。这个操作符由一对尖括号组成,并且通常里面不留任何内容(即“钻石”为空)。使用钻石操作符可以简化代码,避免冗余的类型参数指定。原创 2024-04-30 15:35:00 · 6041 阅读 · 0 评论 -
【java9】java9新特性之命令行交互式解释器JShell
因为内部方法和内部类的关系,我们还可以在JShell中定义一个方法。原创 2024-02-27 15:41:28 · 29555 阅读 · 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 · 52221 阅读 · 2 评论 -
【java9】java9新特性之CompletableFuture的新API
CompletableFuture是Java8引入的一个功能强大的类,用于处理异步编程和函数式编程。它提供了许多方法来组合多个异步操作,使得处理异步任务变得更加简单和直观。原创 2024-04-30 10:29:27 · 10511 阅读 · 1 评论 -
【java9】java9新特性之增强@Deprecated注解
@Deprecated注解现在支持一个新的boolean类型参数forRemoval,用于指示该API是否已经过时,并计划在将来的版本中删除。这使得开发人员可以更清晰地了解哪些API是过时的,并且哪些API是可以安全使用的。在Java9中,使用@Deprecated注解的方式与以前的版本相同,但是现在可以使用forRemoval、since和替代建议这些新特性。如果一个程序或代码片段使用了@Deprecated注解的元素,那么编译器就会生成一个警告信息,表明这个元素是不被推荐使用的。原创 2024-04-26 16:44:53 · 15203 阅读 · 2 评论 -
【java9】java9新特性之集合不可变实例工厂方法
Java9为集合接口List、Set、Map提供了创建不可变实例的工厂方法。这些工厂方法为便利而生,以简单的方式创建这些集合的不可变实例。原创 2024-03-29 15:40:00 · 31475 阅读 · 0 评论 -
【java9】Java9对InputStream类的改进
Java9在InputStream支持方面进行了一些改进,引入了新的API和功能,以提供更强大、更灵活的IO和网络编程能力。原创 2024-05-08 14:17:34 · 20869 阅读 · 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 · 772 阅读 · 0 评论 -
【java8】静态方法与默认方法
静态方法和默认方法都必须有自己的实现,如果一个类既有静态方法,又有默认方法,还有一个抽象方法,那么它还是一个函数式接口。Java8为接口引入了静态方法功能。静态方法必须有自己的实现,而不能仅仅是一个接口声明,不然编译是会报错的。以前为一个接口编写一个工具类,需另外写一个工具类如XxxUtil,现在可以直接将工具类的方法直接写在接口的静态方法中了。后面我们会看到JDK为我们提供的工具方法大部分都在函数式接口中,如java.util.function.Function。函数式接口Function提供一个抽象方原创 2022-06-28 09:00:00 · 797 阅读 · 0 评论 -
【java8】lambda表达式与匿名内部类
lambda简介Lambda表达式类似匿名函数,简单地说,它是没有声明的方法,也即没有访问修饰符、返回值声明和方法名。Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。Lambda表达式的语法(parameters) -> expression或(parameters) -> { statements; }可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。可选的大括号:如果主体原创 2020-08-07 14:13:01 · 35406 阅读 · 0 评论
分享