Java 简明教程
Java - REPL (JShell)
Introduction to REPL (JShell)
REPL 代表 Read Evaluate Print Loop 。 JShell 在 Java 9 中引入,这是一种交互式控制台。JShell 作为 REPL,无需保存且允许在控制台中运行任意 Java 代码片段并执行 compile java code file 。此功能对于快速测试代码非常重要,例如评估 regular expression 、检查 strings 、日期格式等。
JShell 读取输入的每一行,评估并打印结果,然后再次准备下一组输入。
Advantages of Using JShell
JShell 的这一功能为开发人员提供了以下优势 -
-
无需编辑器来 write a Java program 。JShell 本身就作为编辑器并执行 Java 代码。
-
使用 JShell,无需保存 Java 文件、编译和执行代码循环。代码可以直接在 JShell 中测试,无需保存任何内容。
-
在执行代码之前不需要编译。
-
如果发生任何编译时或运行时错误,请重新开始。
Running JShell
打开命令提示符并键入 jshell。
D:\test>jshell
| Welcome to JShell -- Version 20.0.2
| For an introduction type: /help intro
使用 JShell,我们还可以测试方法、类和表达式。在以下示例中,让我们探讨 JShell 的一些特性。
Create and Invoke Method in JShell
以下代码段展示 JShell 中的一个示例“Hello World”程序。在这里,我们创建了一个包含一个语句来打印消息“Hello World!”的方法 greet()。然后,我们调用方法 greet(),结果打印到控制台上。
Creating Variables in JShell
Evaluate Expression in JShell
以下代码段展示了如何使用 JShell 求一个表达式的值。在这里,我们传递了一个返回一个格式化字符串的语句。JShell 自动创建一个字符串变量 $9 并将其赋给结果。作为下一条语句,我们打印了它。
Jshell Built-In Commands
JShell 提供了各种命令来列出已创建的变量、已创建的方法、已使用的导入等。其中一些重要的 JShell 命令有 -
-
/drop – 此命令将按名称、ID 或 ID 范围删除标识的代码片段。
-
/edit – 此命令将打开一个编辑器。
-
/env – 此命令将显示环境设置。
-
/exit – 此命令将从工具中退出。
-
/history – 此命令将显示该工具的历史记录。
-
/help – 此命令将显示命令的帮助。
-
/imports – 此命令将显示当前活动导入。
Example: Demonstrating /help Command
我们可以使用 /help 选项查看所有命令。
jshell> /help
| Type a Java language expression, statement, or declaration.
| Or type one of the following commands:
| /list [<name or id>|-all|-start]
| list the source you have typed
| /edit <name or id>
| edit a source entry
| /drop <name or id>
| delete a source entry
| /save [-all|-history|-start] <file>
| Save snippet source to a file
| /open <file>
| open a file as source input
| /vars [<name or id>|-all|-start]
| list the declared variables and their values
| /methods [<name or id>|-all|-start]
| list the declared methods and their signatures
| /types [<name or id>|-all|-start]
| list the type declarations
...
Example: Demonstrating /vars Command
在以下示例中,我们使用 /vars 命令来打印在一个会话中声明的变量。
C:\Users\Mahesh>jshell
| Welcome to JShell -- Version 20.0.2
| For an introduction type: /help intro
jshell> int i = 10
i ==> 10
jshell> String name="Mahesh"
name ==> "Mahesh"
jshell> /vars
| int i = 10
| String name = "Mahesh"
jshell>
Example: Demonstrating /imports Command
我们可以使用 /imports 命令来检查 JShell 中可用的导入,如下所示:
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.*
jshell>