2K+ 次浏览
Optional 类中 ifPresentOrElse() 方法的改进之处在于它接受两个参数,Consumer 和 Runnable。使用 ifPresentOrElse() 方法的目的是,如果 Optional 包含一个值,则在包含的值上调用函数 action,即 action.accept(value),这与 ifPresent() 方法一致。与 ifPresent() 方法的区别在于 ifPresentOrElse() 有第二个参数 emptyAction。如果 Optional 不包含值,则 ifPresentOrElse() 方法调用 emptyAction,即 emptyAction.run()。语法public void ifPresentOrElse(Consumer
JShell 是一个交互式工具,用于学习 Java 语言和原型设计 Java 代码。JShell 通过评估用户输入的命令来完成工作。此工具基于 REPL(读取-评估-打印-循环)的原理。默认情况下,JShell 在 JShell 会话启动时自动导入一些有用的 Java 包。我们可以键入命令 /imports 以获取所有这些导入的列表。jshell> /imports | import java.io.* | import java.math.* | import java.net.* | import java.nio.file.* | import java.util.* | import java.util.concurrent.* | import java.util.function.* | import java.util.prefs.* | import java.util.regex.* | import java.util.stream.* | import javax.mail.internet.InternetAddress我们也可以在 ... 阅读更多
289 次浏览
从 Java 9 开始,我们能够在接口中添加私有方法和私有静态方法。在接口中使用私有方法的优点是减少默认方法和静态方法之间的代码重复。例如,如果两个或多个默认方法需要共享一些代码,则可以为相同代码创建一个私有方法,并从每个默认方法中调用它。在 Java 9 中,以下变量/方法已在接口中定义。常量抽象方法默认方法静态方法私有方法私有静态方法示例import java.util.*; import java.util.stream.*; interface InterfaceTest { static void printEvenNumbers() { getDataStream().filter(i -> i%2==0).forEach(System.out::println); } static void printLOddNumbers() { getDataStream().filter(i ... 阅读更多
1K+ 次浏览
在 Java 9 中,stream() 方法已添加到 Optional 类以改进其功能。stream() 方法可用于将可选元素的流转换为存在值的元素的流。如果 Optional 包含一个值,则返回包含该值的流。否则,它返回一个空流。语法public Stream stream()示例import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; public class StreamMethodTest { public static void main(String[] args) { List list = Arrays.asList( Optional.empty(), Optional.of("TutorialsPoint"), ... 阅读更多
815 次浏览
在程序执行期间创建的对象会由垃圾回收器 (GC) 自动删除。当一个对象没有被任何线程引用,并且当 JVM 确定无法访问此对象时,它就有资格进行垃圾回收。Object 类有一个 finalize() 方法,该方法在 GC 尝试从堆中删除对象之前会自动调用。在 Java 9 中,finalize() 方法已弃用,并添加了一个新的类 java.lang.ref.Cleaner 来管理垃圾回收。当对象有资格进行垃圾回收时,Cleaner 类的对象会自动收到通知。正在 ... 阅读更多
836 次浏览
JShell 是一个读取-评估-打印循环 (REPL),它在我们输入时评估声明、语句和表达式,并立即显示结果。此工具从命令提示符运行。在下面,我们可以在 JShell 中定义表达式、变量和方法。表达式我们可以在 JShell 中键入任何有效的 Java 表达式。表达式可以是算术运算、字符串操作和方法调用,并立即进行评估。所有结果都自动分配给由 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(); } ... 阅读更多