1K+ 次浏览
Stream API 中的 collect() 方法收集流对象中的所有对象,并将它们存储在集合类型中。用户必须提供结果可以存储的集合类型。我们使用 Collectors 枚举指定集合类型。Collectors 枚举中存在不同类型和不同的操作,但大多数情况下我们可以使用 Collectors.toList()、Collectors.toSet() 和 Collectors.toMap()。语法 R collect(Collector
273 次浏览
JShell 是 Java 9 中引入的交互式 REPL 工具,用于执行和评估简单的 Java 程序,例如变量声明、语句、表达式和程序,无需使用 main() 方法。在 JShell 中,代码片段返回的任何值都会自动保存到临时变量中。这些临时变量可以用 $ 表示。当我们不将表达式的结果赋值给变量时,JShell 中会创建一个临时变量,以便稍后可以使用表达式的输出。在下面的代码片段中,创建了六个临时变量 C:\Users\User>jshell | Welcome to JShell -- Version 9.0.4 | For an introduction type: /help intro jshell> ... 阅读更多
JShell 是 Java 9 中引入的一种新的命令行交互式 REPL (Read-Evaluate-Print-Loop) 工具,用于评估用 Java 编写的声明、语句和表达式。此工具还允许我们执行 Java 代码片段并立即获得结果。有时,我们已经有代码写在 java 文件中了,并且能够在 JShell 中执行它。要将文件加载到 JShell 工具中,可以使用“/open”命令。例如,我在“c://temp”文件夹中创建了“Test.java”文件。以下是代码:String s1 = "TutorialsPoint"; String s2 = "Tutorix"; String s3 = s1 + s2; int sum(int a, int b) ... 阅读更多
332 次浏览
JLink 是一个新的链接器工具,用于创建我们自己的自定义 JRE。通常,我们可以使用 Oracle 提供的默认 JRE 运行我们的程序。如果我们需要创建我们自己的 JRE,则可以使用此工具。JLink 工具可以帮助创建只包含运行应用程序所需类的 JRE。它可以减小开发的 API 的大小以及使用完整 JRE 的依赖性。在 Java 9 中,我们在编译代码及其执行链接时间之间有一个新阶段。链接时间是在编译时间和运行时间阶段之间的一个可选阶段。创建自定义 JRE 的命令 jlink ... 阅读更多
transferTo() 方法已添加到 Java 9 中的 InputStream 类中。此方法用于将数据从 Java 中的输入流复制到输出流。这意味着它读取输入流中的所有字节,并按读取顺序将字节写入输出流。语法 public long transferTo(OutputStream out) throws IOException 示例 import java.util.Arrays; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class TransferToMethodTest { public void testTransferTo() throws IOException { byte[] inBytes = "tutorialspoint".getBytes(); ByteArrayInputStream bis = new ByteArrayInputStream(inBytes); ByteArrayOutputStream bos = new ... 阅读更多
260 次浏览
JShell 是 Java 9 中引入的一种新的交互式命令行工具。此工具也可以称为 REPL(Read-Eval-Print-Loop),因为它接收输入,对其进行评估,并通过命令行向用户返回输出。我们可以使用 JShell 执行多行控制流语句,与 Java 相同。if-else 语句、for 循环和 while 循环也可以在 JShell 中执行。它识别多行语句,并使用符号“…”提示输入下一行语句。If-Else 语句示例 jshell> int distance = 50 distance ==> 50 jshell> if(distance < 30) { ...> System.out.println("It's near"); ...> } ... 阅读更多
589 次浏览
Java 9 中引入的一个重要特性是模块。通过使用模块,我们可以将代码划分为称为模块的更小的组件。这意味着每个模块都有其自身的职责,并声明其对其他模块的依赖性才能正常工作。以下是 Java 9 中创建模块化项目的步骤:最初,我们可以创建一个名为“module-info.java”的文件,并将其添加到为其创建的包(模块)中。例如,如果我们的包名称是 com.mycompany.mypackage,则该文件将进入同一个包(src/com.mycompany.mypackage/module-info.java)。我们可以通过声明“exports”和“requires”表达式来创建模块。如果我们的模块需要另一个模块... 阅读更多
262 次浏览
模块是代码、数据和资源的集合。它是一组相关的包和类型,例如类、抽象类和接口,以及代码、数据文件和一些静态资源。以下是模块的一些特性。模块的特性:模块必须定义一个接口,用于与其他模块通信。模块定义了模块接口和模块实现之间的分离。模块呈现包含信息的属性集。两个或多个模块嵌套在一起。模块具有清晰明确的职责。每个函数仅由一个模块实现。模块必须能够独立于其他模块进行测试。一个模块中的错误不能传播到其他... 阅读更多
3K+ 次浏览
Optional.ifPresentOrElse() 和 Optional.or() 方法都已在 Java 9 版本中引入,以改进其功能。Optional.ifPresentOrElse() 方法检查值是否存在,使用值应用操作,否则返回空操作,而 Optional.or() 方法检查值是否存在,返回包含值的选项,否则返回应用于 Supplier 函数的 Optional。Optional.ifPresentOrElse() 方法包含两个参数,Consumer 和 Runnable,而 Optional.or() 方法只包含一个参数,Supplier。Optional.ifPresentOrElse() 的语法:public void ifPresentOrElse(Consumer
311 次浏览
在 Java 9 中,JShell 提供了一个快速友好的环境,使我们能够快速探索、发现和试验 Java 语言特性和广泛的库。在 JShell 中,不需要手动捕获异常。JShell 会自动捕获每个异常并显示有关它的信息,然后显示下一个 JShell 提示,以便我们可以继续我们的会话。它也适用于非受检异常。通过自动捕获受检异常和非受检异常,JShell 使我们更容易试验抛出受检异常的方法。在下面的示例中,发生了 ArrayIndexOutOfBoundsException,因为找不到“values[4]”的值。示例-1 jshell> int[] values = {10, 20, 30} values ==> int[3] { ... 阅读更多