JShell简介 JavaShell工具(JShell)是一种交互式工具,用于学习Java编程语言和Java代码原型。JShell是一个Read-Evaluate-Print循环(REPL),它在输入声明、语句和表达式时对它们进行求值,并立即显示结果。该工具从命令行运行。JShell是在Java9中引入的,因此不能在Java8中使用。
为什么要使用JShell? Jshell减少了运行Java程序和测试业务逻辑所需的所有工作。如果我们不使用Jshell,那么Java程序的创建包括以下步骤。
- 打开编辑器并编写程序
- 保存程序
- 编译程序
- 如果有编译时错误,请编辑
- 运行程序
- 如果出现任何运行时错误,请编辑
- 重复这个过程
Jshell不需要上述步骤。我们可以评估语句、方法和类,甚至可以在不创建类的情况下编写hello程序。 JShell帮助您在开发程序时尝试代码并轻松探索选项。您可以在JShell会话中测试单个语句,尝试方法的不同变体,并使用不熟悉的API进行实验。JShell不会取代IDE。在开发程序时,将代码粘贴到JShell中进行尝试,然后将JShell中的工作代码粘贴到程序编辑器或IDE中。
启动和停止JShell 要启动Jshell,首先必须安装Java 9,然后在Linux中打开terminal或在windows中打开命令提示符,然后键入Jshell。它将启动jshell会话,并向控制台显示欢迎消息。
你好Java消息
要显示简单的“Hello Java”消息,请在不创建类的情况下编写print命令,然后按enter键。
要退出JShell,请输入命令:
jshell> /exit| Goodbye
片段 JShell接受Java语句;变量、方法和类定义;进口;还有表情。这些Java代码片段被称为代码片段。 在提示符处输入以下示例语句,并查看显示的输出:
jshell> int x = 11x ==> 11| created variable x : int
首先,显示结果。可以这样理解:变量x的值为45。由于您处于详细模式,因此还会显示发生的情况的描述。信息性消息以竖条开始。请注意,创建的变量的名称和类型都会显示出来。 当输入没有命名变量的表达式时,会创建一个临时变量,以便以后可以引用该值。下面的示例显示了表达式和方法结果的暂存值。该示例还显示了当代码段需要多行输入才能完成时使用的继续提示(…>):
jshell> 8 + 8$3 ==> 16| created scratch variable $3 : intjshell> String double(String s) { ...> return s + s; ...> }| created method double(String)jshell> double("Geeks")$5 ==> "GeeksGeeks"| created scratch variable $5 : String
例外情况 在异常回溯中,反馈标识代码段以及代码段中发生异常的位置。
输入JShell的代码中的位置显示为#ID:line number,其中snippet ID是/list命令显示的数字,line number是snippet中的行号。在以下示例中,异常发生在方法第二行的片段1中,即divide()方法:
jshell> int half(int x, int y) { ...> return x / y; ...> }| created method divide(int,int)jshell> divide(5, 0)| java.lang.ArithmeticException thrown: / by zero| at divide (#1:2)| at (#2:1) jshell> /list 1 : int divide(int x, int y) { return x / y; } 2 : divide(5, 0)
命令简介 JShell命令控制环境并在会话中显示信息。
命令与代码段的区别在于前导正斜杠(/)。有关当前变量、方法和类型的信息,请使用/vars、/methods和/types命令。对于输入的代码段列表,请使用/list命令。下面的示例显示了基于这些示例的这些命令
jshell> /vars| int x = 8| int $3 = 16| String $5 = "GeeksGeeks"jshell> /methods| double(String)Stringjshell> /list 1 : System.out.println("Hi"); 2 : int x = 8; 3 : 8 + 8 4 : String double(String s) { return s + s; } 5 : double("Ocean")
请注意,将显示变量的类型和值以及方法的类型签名。
JShell有一个默认的启动脚本,在JShell启动之前自动执行,这样您就可以快速开始工作。除非使用/list-start或/list-all命令请求,否则不会列出启动脚本中的条目:
jshell> /list -all s1 : import java.util.*; s2 : import java.io.*; s3 : import java.math.*; s4 : import java.net.*; s5 : import java.util.concurrent.*; s6 : import java.util.prefs.*; s7 : import java.util.regex.*; 1 : System.out.println("Hi"); 2 : int x = 8; 3 : 8 + 8 4 : String double(String s) { return s + s; } 5 : double("GeeksGeeks")
默认启动脚本由几个常见导入组成。您可以使用/set start命令对启动条目进行个性化设置。有关此命令的信息,请输入/help/set start。/save-start命令将当前启动脚本保存为自己启动脚本的起点。
其他重要命令包括/exit以离开JShell、/save以保存代码段和/open以输入文件中的代码段。
输入/help以获取JShell命令的列表。