如您所知,Java制定了独特的发行策略,每6个月将发行一个新版本。不仅如此,许可也发生了变化。要使用Oracle JDK,您需要一个单独的生产许可证,但是,可以出于开发目的免费使用它。不用担心,您也可以将OpenJDK用作开源选项。我本人正在使用OpenJDK。
好的,回到最新版本。在发布本文时,最新版本是14,而15处于发布阶段。但是它已经改进了很多,并且在用户级别和JVM上都向该语言添加了许多新功能。所有版本都将支持6个月,每3年支持一次,即,在6个版本之后,将发布LTS版本。最新的LTS是11,下一个将是17。因此,许多组织都在寻求LTS支持,这就是为什么他们使用Java 11的原因,我们正在谈论它。要安装Java 11,请按照3个简单步骤安装Windows 11或任何Java版本:Windows并仅使用Java 11而不是13。我还将为Mac和Linux添加新的帖子。
来自以前的Java版本 Java 11本身具有许多新功能。但是我想谈谈以前版本中的一些功能。其中之一是关键字。不需要LHS = RHS作为参考。Jshell也是与其他语言的REPL竞争的绝佳补充。我想说,模块系统也使其更加简洁。我喜欢Stream API中的改进。我将在其他文章中详细讨论此问题,敬请关注CodersTea.com。
好吧,回到Java 11,我们开始。
Java 11中的字符串 在Java 11的String类中添加了许多函数。但是,我将坚持我认为我们最常使用的函数。让我们一一看一下。
repeat(n) 现在,不再需要使用第三方库来创建包含相同字符的字符串n次。只需执行以下操作。
strigToRepeat.repeat(noOfTimesYouWantToRepeat)
lines() 在我看来,lines()是string.split("\n")在类固醇上使用的。它使用多行创建从给定String中提取的String流。
string.split("\n")
String multiLines = "abc \n bac \n abc \n cab " long count = multiLines .lines() // Stream<String> .filter(s -> s.equals("abc")) // only "abc" is allowed .count(); // count the number of "abc" : 2
strip(),stripTrailing(),stripLeading() 这些功能有助于trim()。它使用Unicode,因此比trim好得多。
trim()
stripTrailing()用于删除字符串末尾的空格。另一方面,stripLeading()用于删除开头的空白。使用strip(),前缀和后缀空格都将被删除。
String string = " some Text "; // I have put '.' as to indicate // the start and end of the string string.strip(); // .some Text. string.stripLeading();// .some Text . string.stripTrailing();// . some Text.
isblank() 顾名思义,它告诉您字符串是否为空白。它认为只有空格的字符串为空白。
"".isBlank();// true " ".isBlank(); // true "Some text".isBlank(); // false
All New Files Methods 文件是File类的util或helper类。我观察到的一件事是,特定类的帮助程序类具有相同的名称,但末尾带有“ s”,即该类的复数形式是其帮助程序类。例如,“对象用于对象”,“文件用于文件”。让我们在Files类中查看新方法。
readString(Path) 只要提供文件的路径,它将返回包含文件数据的字符串。这样的简单操作无需文件流类。它需要路径作为参数。它还具有用于解码的重载参数字符集。
Files.readString(Path.of("path/for/file"));
writeString(Path,String) 您现在正在写入文件,而不是读取。它带有文件的路径和将写入文件的字符串。它还具有其他参数,例如charset和open选项。
Files.writeString(Path.of("path/for/file"), "CodersTea.com" );
isSamefile(Path1, Path2) 给定的路径是否引用相同的文件。它检查位置而不是内容,因此不要感到困惑。
Path path1 = Path.of("/user/coderstea/java11.txt"); Path path2 = Path.of("/user/coderstea/java11.txt"); Path path3 = Path.of("/user/coderstea/java13.txt"); Files.isSameFile(path1, path3); // false Files.isSameFile(path1, path2); // true Files.isSameFile(path2, path3); // false
Optional#isEmpty() 最后,一个函数删除!optional.isPresent()的存在。是的,我一开始就厌倦了写感叹号,以检查是否为空的Optional。我想知道为什么他们没有在Java 8本身中添加它。如果您对Optional及其奇特的知识不熟悉,请查看我在Java 8&Beyond中使用Optional减少NullPointerExceptions的相关文章。
Optional<String> nonEmptyOptional = Optional.of("Some string"); Optional<String> emptyOptinal = Optional.empty(); Optional<String> nullValueOptional = Optional.ofNullable(null); nonEmptyOptional.isEmpty(); // false emptyOptinal.isEmpty();// true emptyOptinal.isPresent();// false nullValueOptional.isEmpty(); // true nullValueOptional.isPresent();// false
结论 除了上面提到的内容以外,还有关于Java 11的更多更新。我只提到了我认为人们会最常使用的内容。引擎盖下也有很多改进。您仍然可以在官方网站上找到所有列表。
原文链接:http://codingdict.com