254 次浏览
JShell 是一个命令行工具,允许我们输入 Java 语句(简单的语句、复合语句,甚至是完整的函数和类),对其进行评估并打印结果。前向引用是指引用在任何我们已在 JShell 中键入的代码中不存在的函数、变量或类的命令。由于代码在 JShell 中按顺序输入和评估,这些前向引用暂时未解析。JShell 支持函数体、返回类型、参数类型、变量类型和类中的前向引用。在下面的代码片段中,在 Jshell 中创建了一个函数 forwardReference()。在声明变量之前,无法调用此函数。如果我们尝试调用此函数,它将抛出一个…… 阅读更多
385 次浏览
JShell 是从 Java 9 开始引入的交互式工具。它是 Java 的第一个官方 REPL 工具,用于在命令行中创建一个简单的编程环境,读取用户的输入,对其进行评估并打印结果。我们可以使用 Java 语言以编程方式创建一个新的 JShell 实例。可以在 jdk.jshell 包下找到 JShell 及其相关的 API。我们可以使用 JShell 类的静态方法 create() 获取 JShell 的新实例。JShell 类的 eval() 方法用于向 JShell 实例添加表达式。它返回由评估触发的事件列表。它恰好是一个…… 阅读更多
380 次浏览
JShell 是一个交互式工具,允许我们执行 Java 代码并获得即时结果。我们可以快速评估表达式或简短的算法,而无需编译或构建它。我们可以借助 JShell 工具执行表达式、类、方法、变量等。以下是一些键盘快捷键:Enter - 验证行左箭头 - 在行中向左移动右箭头 - 在行中向右移动Ctrl-A - 移动到行首Ctrl-E - 移动到行尾Alt-B - 向左移动,逐词Alt-F - 向右移动,逐词Delete - 删除光标后的字符Backspace - 删除…… 阅读更多
778 次浏览
Jigsaw 项目的主要目标是引入模块化概念,在 Java 9 中创建模块,然后将其应用于 JDK。以下是模块化 (Jigsaw) 的一些好处:强大的封装:模块只能访问可用的部分。除非包被显式导出到 module-info.java 文件中,否则包中的公共类不能是公共的。清晰的依赖关系:模块必须声明通过 required 子句使用的其他模块。模块组合在一起以创建更短的运行时,可以扩展到相对较小的计算…… 阅读更多
1K+ 次浏览
从 Java 9 开始,readNBytes() 方法可以添加到 InputStream 类中。此方法将请求的字节数从输入流读取到给定的字节数组中。此方法会阻塞,直到读取 len 个输入数据字节、检测到流的结尾或抛出异常。readNBytes() 方法不会关闭输入流。此方法对于避免大型文件出现内存问题很有用。语法public int readNBytes(byte[] b, int off, int len) throws IOException在下面的示例中,我们在源文件夹中创建了一个 "Technology.txt" 文件,其中包含简单数据:{ "JAVA", "PYTHON",…… 阅读更多
225 次浏览
模块是包的容器,每个模块都包含一个模块描述符,其中包括模块名称、模块依赖项,这意味着其他模块的名称取决于它以及它导出的包的名称,这些包只能被依赖它的模块使用。module com.tutorialspoint.app { /** 模块 com.tutorialspoint.app 依赖的模块 */ requires com.tutorialspoint.services; /** 此模块公开的包,其他模块可以使用 */ exports com.tutorialspoint.app.util; }Java 9 模块提供了三种不同的编译模式:传统模式、单模块模式和多模块模式。模块的编译模式…… 阅读更多
289 次浏览
JShell 可以提供一个交互式 shell,用于快速原型设计、调试和学习 Java 和 Java API,而无需 main() 方法,也无需在执行之前编译我们的代码。类的声明:我们可以像在 Java 语言中编写代码一样声明类。JShell 可以检测到类何时完成。在下面的代码片段中,我们可以声明一个具有两个参数和一个方法的 Employee 类。C:\Users\User>jshell | Welcome to JShell -- Version 9.0.4 | For an introduction type: /help intro jshell> class Employee { ...> String empName; ...> …… 阅读更多
8K+ 次浏览
从 Java 9 开始,我们可以使用 InputStream 类的 readAllBytes() 方法将所有字节读取到字节数组中。此方法会立即读取 InputStream 对象中的所有字节,并阻塞直到读取所有剩余字节并检测到流的结尾,或者抛出异常。reallAllBytes() 方法不能自动关闭 InputStream 实例。当它到达流的末尾时,此方法的进一步调用将返回一个空字节数组。我们可以将此方法用于简单的用例,在这些用例中,将所有字节读取到字节数组中很方便,而无需…… 阅读更多
LocalDate.datesUntil() 方法在两个 LocalDate 实例之间创建一个流,并允许我们选择性地指定步长。此方法有两个变体,第一个变体采用结束日期并给出当前日期和结束日期之间的日期列表,而第二个变体采用 Period 对象作为参数,该对象提供了一种跳过日期并仅流化开始日期和结束日期之间日期的选定子集的方法。语法public Stream datesUntil(LocalDate end) public Stream datesUntil(LocalDate end, Period step)示例import java.time.LocalDate; import java.time.Period; import java.time.Month; import java.util.stream.Stream; public class DatesUntilMethodTest { public static void main(String args[]) { …… 阅读更多
415 次浏览
JShell 是一个交互式命令行工具,允许我们学习、调查和探索 Java 语言及其 API。我们可以将任何有效的 Java 代码输入控制台并获得即时结果,而无需编写带有 main() 方法的冗长类。如果我们想使用下面的代码片段在 JShell 中获取当前日期和时间。C:\Users\User>jshell | Welcome to JShell -- Version 9.0.4 | For an introduction type: /help intro jshell> new Date() $1 ==> Fri Feb 28 11:59:23 IST 2020 jshell>在下面的代码片段中,我们需要获取一个日期…… 阅读更多