Java 11中我喜欢和使用的东西


如您所知,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 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好得多。

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