837 次浏览
JShell 是一个读取-评估-打印循环 (REPL),它在我们输入时评估声明、语句和表达式,并立即显示结果。此工具从命令提示符运行。在下面,我们可以定义 JShell 中的表达式、变量和方法。表达式我们可以在 JShell 中键入任何有效的 Java 表达式。表达式可以是算术运算、字符串操作和方法调用,并立即进行评估。所有结果都自动分配给 JShell 创建的变量。这些变量以 $ 符号作为前缀。示例jshell> 10 * 5 $1 ==> 50 jshell> 77 % 3 $2 ==> 2 jshell> $1 + $2 $3 ==> 52 jshell>变量在... 阅读更多
215 次浏览
JShell 还可以提供自动完成功能,当我们通过按下 Tab 键部分键入现有类、变量或方法的名称时。如果无法根据我们输入的内容确定项目,则会提供可能的选项。在 JShell 中按下 Tab 键执行以下任务之一:如果没有任何其他名称与我们键入的内容匹配,JShell 会为我们输入其余名称。如果有多个名称以相同的字母开头,则 JShell 会显示这些名称的列表,以帮助我们确定接下来要键入的内容,然后键入下一个字母并再次按下 Tab 键以完成名称。如果... 阅读更多
379 次浏览
Java Shell 或 JShell 是 Java 9 中引入的官方 REPL(读取-评估-打印循环)。它提供了一个交互式 shell,用于快速原型设计、调试,无需 main() 方法或无需在执行前编译代码。通过在命令提示符下键入“jshell”可以轻松启动 JShell。保存代码片段我们可以使用“/save [-all|-history|-start]”命令将代码片段源保存到文件。C:\Users\User>jshell | 欢迎使用 JShell -- 版本 9.0.4 | 要获取简介,请键入:/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() 方法则使用提供的 value 完成 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 的不可修改实例后无法添加、删除或更新的 Map。来自 Map 的静态工厂方法:Map.of() 和 Map.ofEntries() 提供了一种在 Java 9 中创建不可修改 Map 的便捷方法。使用 Map.of() 和 Map.ofEntries() 方法创建的 Map 实例具有以下特征。工厂方法返回的 Map 通常是不可变的。这意味着无法添加、删除或更新键和值。对 Map 调用任何更改器方法都会导致 UnsupportedOperationException。如果 Map 的包含键/值本身是可变的,则可能会导致 Map... 阅读更多