837 次浏览
JShell 是一个读取-求值-打印循环 (REPL),它会评估我们输入的声明、语句和表达式,并立即显示结果。此工具从命令提示符运行。在下文中,我们可以定义 JShell 中的表达式、变量和方法。表达式我们可以键入任何有效的 Java 表达式到 JShell 中。表达式可以是算术运算、字符串操作和方法调用,并立即进行求值。所有结果都自动分配给 JShell 创建的变量。这些变量名前缀为 $ 符号。示例jshell> 10 * 5 $1 ==> 50 jshell> 77 % 3 $2 ==> 2 jshell> $1 + $2 $3 ==> 52 jshell>变量在……阅读更多
215 次浏览
当我们通过按下 Tab 键部分输入现有类、变量或方法的名称时,JShell 还可以提供自动完成功能。如果无法根据我们输入的内容确定项目,则会提供可能的选项。在 JShell 中按下 Tab 键会执行以下一项任务:如果没有任何其他名称与我们键入的内容匹配,JShell 会为我们输入其余的名称。如果有多个名称以相同的字母开头,则 JShell 会显示这些名称的列表,以帮助确定接下来要键入的内容,然后键入下一个字母(或多个字母),并再次按下 Tab 键以完成名称。如果……阅读更多
379 次浏览
Java Shell 或 JShell 是 Java 9 中引入的官方 REPL(读取-求值-打印循环)。它提供了一个交互式 shell,用于快速原型设计和调试,而无需 main() 方法,也无需在执行前编译代码。只需在命令提示符下键入“jshell”即可轻松启动 JShell。保存代码片段我们可以使用“/save [-all|-history|-start]”命令将代码片段源保存到文件。C:\Users\User>jshell | Welcome to JShell -- Version 9.0.4 | For an introduction type: /help intro jshell> /save C:\Users\User\jshell.txt以上代码在指定路径下创建了一个新的“jshell.txt”。编辑代码片段我们也可以编辑……阅读更多
114 次浏览
Java 9 通过添加新方法改进了 Process 类,并提供了一个新的接口:ProcessHandle 和 ProcessHandle.Info,用于获取有关进程及其信息的所有详细信息。以下是 Java 9 中添加到 Process 的新方法列表boolean supportsNormalTermination(): 如果 destroy() 的实现是正常终止进程,则返回 true,否则返回 false。long pid(): 返回进程的本机进程 ID。ProcessHandle toHandle(): 返回 Process 的 ProcessHandle。Stream children(): 返回进程的直接子进程的快照。Stream descendants(): 返回后代的快照……阅读更多
472 次浏览
在 Java 9 中,接口也可以具有私有方法。除了 Java 8 中的静态方法和默认方法之外,这是另一个重大变化,因为它允许在接口本身内重用公共代码。在一个接口中,有可能在一个以上默认方法上编写公共代码,这会导致代码重复。私有方法的引入避免了这种代码重复。接口中私有方法的优势避免代码重复。确保代码可重用性。改进代码可读性。语法interface interfacename { private methodName(parameters) { // 语句 } }示例interface Test { default void m1() { common(); } ……阅读更多
372 次浏览
在 Java 8 中,Stream API 的 iterate() 方法将种子和一元运算符作为参数。由于流变得无限,它使开发人员可以通过使用 limit、findFirst、findAny 等添加明确的终止条件。在 Java 9 中,Stream API 的 iterate() 方法添加了一个新的参数,一个谓词,它采用中断流的条件。语法static Stream iterate(T seed, Predicate
373 次浏览
在 Java 9 中,已向 Collections API 添加了一些工厂方法。通过使用这些工厂方法,我们可以创建不可修改的列表、集合和映射集合对象,以减少代码行数。List.of()、Set.of()、Map.of() 和 Map.ofEntries() 是提供方便创建 Java 9 中不可变集合的静态工厂方法。不可变集合的优势更少的堆空间:与早期 Java 版本的传统方法相比,存储集合数据所需的存储空间要少得多。更快的访问数据:由于减少了将数据存储和包装到 Collections.unmodifiable 中的开销,现在数据访问变得更快了。这意味着……阅读更多
1K+ 次浏览
orTimeout() 和 completeOnTimeOut() 方法都定义在 CompletableFuture 类中,这两个方法是在 Java 9 中引入的。orTimeout() 方法可用于指定如果给定任务在一定时间内未完成,则程序停止执行并抛出 TimeoutException,而 completeOnTimeOut() 方法则使用提供的值完成 CompletableFuture。如果没有,则在给定的超时之前完成。orTimeout() 的语法public CompletableFuture orTimeout(long timeout, TimeUnit unit)示例import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; public class OrTimeoutMethodTest { public static void main(String args[]) throws InterruptedException { int a = 10; int b = 15; ……阅读更多
2K+ 次浏览
ofNullable() 方法是 Stream 类的静态方法,如果非空,则返回包含单个元素的顺序流,否则返回空流。Java 9 引入了此方法以避免 NullPointerException,并避免流的空检查。使用 ofNullable() 方法的主要目标是如果值为 null,则返回空选项。语法static Stream ofNullable(T t)示例-1import java.util.stream.Stream; public class OfNullableMethodTest1 { public static void main(String args[]) { System.out.println("TutorialsPoint"); int count = (int) Stream.ofNullable(5000).count(); System.out.println(count); System.out.println("Tutorix"); count = (int) Stream.ofNullable(null).count(); ……阅读更多
307 次浏览
不可修改的 Map(映射)是指一旦创建了不可修改的 Map 实例,其键和值就无法添加、删除或更新。Java 9 中的 Map 提供了静态工厂方法:`Map.of()` 和 `Map.ofEntries()`,这为创建不可修改的 Map 提供了一种便捷的方式。使用 `Map.of()` 和 `Map.ofEntries()` 方法创建的 Map 实例具有以下特征:工厂方法返回的 Map 通常是不可变的。这意味着键和值不能添加、删除或更新。对 Map 调用任何修改方法都会导致 `UnsupportedOperationException`。如果 Map 中包含的键/值本身是可变的,则可能会导致 Map… 阅读更多