Java 中的读-求值-打印循环 (REPL)2025年3月27日 | 阅读 4 分钟 读-求值-打印循环 (REPL) 是一个 shell 接口。该接口读取并求值输入的每一行,然后打印结果。读-求值-打印循环 帮助我们与处于特定状态的应用程序运行时进行交互。命令由 REPL 读取和求值,并打印结果。打印结果后,REPL 会返回到开始,读取、求值并打印我们的下一个输入。 ![]() 使用 REPL,我们可以轻松地编写和测试 Java 代码,而无需编译它,并直接在控制台上看到输出。 Java 还没有 REPL 吗?当然,像 Java 这样成熟的语言应该有一个 REPL。但是,并非所有语言都拥有 REPL,Java 就是其中之一。Java 开发者对此的需求最大。Java 已经有了类似 REPL 的东西,那就是 Java Beanshell。但该项目并非一个功能齐全的 REPL,与其他语言相比有所不足。为此,在 2016 年,Java 9 发布了,它提供了一个功能齐全的 REPL 环境。 为什么 REPL 如此有用?使用 REPL,我们无需使用 javac 命令来编译或测试我们的 Java 代码。在使用 REPL 之后,
![]() 我们可以求值方法、类和语句,而无需创建类。甚至可以不创建类就编写 "Hello World" 程序。 使用 REPL 的要求使用 REPL 只有一个要求,即我们的系统应安装有 Java 9 或更高版本。如果系统已安装 Java 9,我们就可以准备使用 REPL 了。要检查系统中当前的 Java 版本,请打开命令提示符并键入以下命令 ![]() 使用 REPL以下是一些 REPL 的示例,我们将在此演示求值数学表达式、计算斐波那契数列、创建动态类、了解历史以及修改类。 示例 1:求值数学表达式 描述 在第一行,我们创建了一个 double 类型的变量 "a" 并将其初始值设置为 10。之后,我们找到变量 "a" 的平方并将其存储在同一个变量中。之后,我们简单地将 20 加到变量 "a" 上。Jshell 会将结果放入一个临时变量 "$3" 中。接下来,我们执行 "/vars" 命令,该命令显示了所有已创建的变量。最后,我们创建了一个 double 类型的变量 "data",并将数字 8.3 的 5 次方存储其中。 输出 ![]() 示例 2:计算斐波那契数列 描述 在前六行代码中,我们创建了一个用于斐波那契数列的方法。之后,我们使用 Jshell 的 /methods 命令,该命令显示了所有可用的方法。在接下来的两行中,我们通过传递整数值来测试 fibo() 方法。我们创建了一个数组 arr 来确定我们想要获取多少项斐波那契数列。接下来,我们使用 for-each 循环遍历 arr 的每个值。我们将 arr 的每个值传递给 fibo() 方法并打印其返回值。 输出 ![]() 示例 3:REPL 用于重用 描述 在上面的代码中,我们创建了一个与之前创建的具有相同返回类型和参数的 fibo() 方法。此时,Jshell 会用当前的方法覆盖之前的 "fibo()" 方法。接下来,我们向该函数传递 arr 的每个值,以确保我们的 fibo() 方法是否被覆盖。 输出 ![]() 示例 4:定义类 描述 在上面的代码中,我们创建了 "Student" 类,它包含姓名、年龄、课程和学期。我们创建了一个构造函数,在其中为这些变量设置值。在构造函数之后,我们创建了一个方法,该方法显示了类每个实例的所有变量的值。 输出 ![]() 示例 5:创建类的实例 描述 在上面的代码中,我们创建了类的两个实例,并为所有类变量向构造函数传递了值。接下来,我们运行 Jshell 命令来检查 s1 和 s2 变量是否已创建。最后,我们调用 showData() 方法来显示每个实例的数据。 输出 ![]() |
java.net Java 程序是专门为在网络上运行而构建的。为了练习这些网络应用程序,在该包下提供了一组类。下面给出了各种类的摘要:类说明 Authenticator 对于网络应用程序,首先获取...很重要。
阅读 6 分钟
在 Java 中,构造函数是一种特殊类型的方法,其名称与类名相同。在内部,构造函数在创建类对象时始终被调用。它用于初始化对象的 state。同样……
阅读 2 分钟
Java 是一种平台无关的编程语言。这意味着我们可以在具有 Java 解释器的平台上运行 Java。这是使 Java 平台无关的原因。Java 解释器将 Java 字节码(.class 文件)转换为操作系统可理解的代码...
阅读 3 分钟
给定两个数组 A[] 和 B[],其中每个数组分别包含 N 和 M 个整数。我们的任务是找出配对 (A[i], B[j]) 的计数,这些配对确保它们的不同素数因子数量的乘积是偶数。示例 1:输入:int arr_A[] = {1, 7} int...
阅读 6 分钟
在 Java 中,BiFunction 是一个函数式接口。它在 Java 8 中引入。它可以用作 lambda 表达式或方法引用的赋值目标。它属于 java.util.function 包。@FunctionalInterface public interface BiFunction<T,U,R> 该接口接受三个类型参数,如下所示: T:表示第一个...
阅读 2 分钟
在本节中,我们将学习什么是 sublime number,并创建 Java 程序来检查给定数字是否为 sublime number。Sublime number 程序经常出现在 Java 编码面试和学术界。Sublime Number 自然数 N 是...
阅读 2 分钟
在本节中,我们将学习如何用 Java 创建一个简单的银行系统应用程序。在此程序中,我们将添加一些银行账户的基本功能,如存款、取款等。最初,程序接受客户数量...
阅读 10 分钟
Tetris 游戏是有史以来最常见的计算机游戏之一。如今,我们也可以在手机上玩这个游戏。该游戏由 Alexey Pajitnov 于 1985 年设计和创建。他是一位俄罗斯程序员。有许多不同的变体...
11 分钟阅读
? 方法在 Java 编程中至关重要,因为它们定义了对象的行为并包含可重用的代码。在某些情况下,即使大多数方法都与特定的类实例相关联,将方法指定为静态也是有意义的。在本文中,我们将探讨静态...
5 分钟阅读
文本转语音 (TTS) 或大声朗读是一种辅助技术(它是指针对残疾人的辅助、适应性和康复设备),可以朗读数字文本。文本转语音 (TTS) 转换是 ATM、在线翻译器、文本扫描仪等智能设备的高级功能……
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India