Java11在2018年9月25日正式发布,与Java9和Java10这两个被称为”功能性的版本”不同,Java11仅将提供长期支持服务(LTS,Long-Term-Support),还将作为Java平台的默认支持版本,并且会提供技术支持直至2023年9月,对应的补丁和安全警告等支持将持续至2026年。同时,从Java11开始,OracleJDK不再可以免费的用于商业用途,当然如果你是个人使用,或者是使用OpenJDK,那么还是可以免费使用的。JEP181:基于嵌套的访问控制Java一直以来都支持嵌套类,包括静态嵌套类(staticnestedclasses)和非静态嵌套类(innerclas
Java9提供了新的HTTP客户端(HttpClient)来处理HTTP调用,但是那时还处于孵化器阶段,经历了Java9、Java10,终于在Java11版本正式“转正”。为什么要提供全新的HTTP客户端Java11引入新的HTTP客户端的原因是为了解决旧的HttpURLConnection类存在的多个问题和局限性。HttpURLConnection存在如下几个局限性:不直观的API设计:HttpURLConnection的API设计过于复杂,对于新手比较难上手,例如我们必须手动处理输入和输出流,以及错误处理。不支持HTTP/2:HttpURLConnection仅支持HTTP/1.1,不支持
局部变量类型推断是Java10引入的,通过使用var关键字允许编译器推断变量的类型,这大大简化了Java代码的编写。但是在Java10中我们是不能在Lambda参数使用var,这在Java11中得到了改进。关于局部变量类型推断参考文章:Java10新特性—局部变量类型推断在Java11之前,我们是不能在Lambda表达式的参数中使用var,例如:Function<String,String>func=(varstr)->str.toUpperCase();这种写法在Java11之前是非法的,但是在Java11中是合法的,在这个例子中,str的类型被推断为String。由于可以
Optional是在Java8中引入用于处理可能为null的对象。它提供了一种更优雅的方法来减少NullPointerException的可能性。为了我们能够方便地使用Optional,Java11对它进行了增强,主要是新增了一个API:方法描述isEmpty()判断容器是否为空,如果包含的值不存在,则返回true。isEmpty()如果Optional对象为空,isEmpty()返回true,它是isPresent()的对立面。Optional<String>optional=Optional.empty();if(optional.isEmpty()){System.out.p
Java11对java.nio.file.Files新增了三个API:readString():读取文件内容writeString():写入文件内容isSameFile():比较两个路径是否指向文件系统中的同一个文件这三个API简化了我们对文件的操作,使得操作文件变得更加简便了。readString()该方法可以一次性读取文件的全部内容,避免了以前我们使用BufferedReader类的繁琐过程。@TestpublicvoidreadStringTest()throwsIOException{Pathpath=Paths.get("skjava.txt");Stringco
String绝对是Java中最常用的一个类了,String类的方法使用率也都非常的高,Java11为了更好地处理字符串,引入了几个新的API:方法名描述isBlank()检查字符串是否为空或仅包含空白字符lines()分割获取字符串流(Stream)strip()去除字符串首尾的空白字符repeat(n)复制字符串isBlank()用于判断字符串是否为空或者只包含空白字符。"".isBlank();//true"".isBlank();//true"\n\t".isBlank()//true"skjava.com"