文章目录
一、简介
JShell(Java Shell)工具是 JDK1.9 出现的工具, JShell 是一个用于学习 Java 编程语言和 Java 代码原型的交互式工具。JShell 是交互式 REPL(Read-Evaluate-Print Loop,读取-求值-输出 循环)工具。它在输入时评估声明,语句和表达式,并立即显示结果。
可以在命令终端输入下面的命令查看 JShell 简介:
jshell> /help intro | | intro | | 使用 jshell 工具可以执行 Java 代码, 从而立即获取结果。 | 您可以输入 Java 定义 (变量, 方法, 类, 等等), 例如: int x = 8 | 或 Java 表达式, 例如: x + x | 或 Java 语句或导入。 | 这些小块的 Java 代码称为 '片段'。 | | 这些 jshell 命令还可以让您了解和 | 控制您正在执行的操作, 例如: /list | | 有关命令的列表, 请执行: /help
简而言之,使用 JShell,你可以输入代码片段并马上看到运行结果,然后就可以根据需要作出调整。
二、为什么使用 JShell
使用JShell,您可以一次输入一个程序元素,立即查看结果,并根据需要进行调整。
Java程序开发通常涉及以下过程:
JShell 可帮助您在开发程序时尝试代码并轻松探索选项。您可以测试单个语句,尝试不同的方法变体,并在 JShell 会话中试验不熟悉的API。JShell 不替换 IDE。在开发程序时,将代码粘贴到 JShell 中进行试用,然后将 JShell 中的工作代码粘贴到程序编辑器或 IDE 中。
三、参考示例
启动 JShell
liaowenxiongdeMacBook-Air:~ liaowenxiong$ jshell | 欢迎使用 JShell -- 版本 9.0.4 | 要大致了解该版本, 请键入: /help intro jshell>
退出 JShell
jshell> /exit | 再见
声明定义基本类型的变量
jshell> int x = 45 x ==> 45 | 已创建 变量 x : int
声明定义一个方法
jshell> String twice(String s) {
...> return s + s; ...> } | 已创建 方法 twice(String) jshell> twice("Oecan") $4 ==> "OecanOecan" | 已创建暂存变量 $4 : String
注:直接调方法执行,没有指定变量接收,JShell 会自动创建一个临时变量接收返回值。
覆盖已存在的变量、方法、类的定义
在试验代码时,您可能会发现变量,方法或类的定义没有按照您希望的方式执行。通过输入新的定义可以轻松更改定义,该定义将覆盖先前的定义。
例如,重新定义 twice() 方法:
jshell> String twice(String s) {
...> return "Twice: " + s; ...> } | 已修改 方法 twice(String) | 更新已覆盖 方法 twice(String) jshell> twice("thing") $6 ==> "Twice: thing" | 已创建暂存变量 $6 : String
例如,重新定义变量:
jshell> int x = 45 x ==> 45 | 已创建 变量 x : int jshell> String x x ==> null | 已替换 变量 x : String | 更新已覆盖 变量 x : int
查看 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.*
自动补全功能
当我们想输入 System 类时,只需要输入 Sys 然后按下 Tab 键,则自动补全, 然后再输入“.o”,则会自动补全方法,在补全“System.out.”后再按下 Tab 键,就会列出当前类的所有的 public 方法:
jshell> System 签名: java.lang.System <再次按 Tab 可查看文档> jshell> System.out. append( checkError() close() equals( flush() format( getClass() hashCode() notify() notifyAll() print( printf( println( toString() wait( write(
列出所有键入的源
列出到目前为止当前 session 里所有有效的代码片段:
jshell> /list 2 : 2+2 4 : twice("Oecan") 5 : String twice(String s) {
return "Twice: " + s; } 6 : twice("thing") 8 : String x;
列出已声明方法及其签名
jshell> /methods | String twice(String)
加载外部的源代码
如果在外部已经有写好的 Java 文件,可以使用 /open 命令导入到 JShell 环境中,例如现在有一个Test.java 文件:
void say(String name) {
System.out.println("hello " + name); }
导入 JShell 进程中:
jshell> /open /Users/Documents/java11/Test.java jshell> /methods # 查看已经声明定义的方法 | String twice(String) | void say(String) jshell> say("zhangsan") hello zhangsan
查看 JShell 提供的所有指令
jshell> /help | 键入 Java 语言表达式, 语句或声明。 | 或者键入以下命令之一: | /list [<名称或 id>|-all|-start] | 列出您键入的源 | /edit <名称或 id> | 编辑源条目 | /drop <名称或 id> | 删除源条目 | /save [-all|-history|-start] <文件> | 将片段源保存到文件 | /open <file> | 打开文件作为源输入 | /vars [<名称或 id>|-all|-start] | 列出已声明变量及其值 | /methods [<名称或 id>|-all|-start] | 列出已声明方法及其签名 | /types [<名称或 id>|-all|-start] | 列出类型声明 | /imports | 列出导入的项 | /exit [<integer-expression-snippet>] | 退出 jshell 工具 | /env [-class-path <路径>] [-module-path <路径>] [-add-modules <模块>] ... | 查看或更改评估上下文 | /reset [-class-path <路径>] [-module-path <路径>] [-add-modules <模块>]... | 重置 jshell 工具 | /reload [-restore] [-quiet] [-class-path <路径>] [-module-path <路径>]... | 重置和重放相关历史记录 -- 当前历史记录或上一个历史记录 (-restore) | /history | 您键入的内容的历史记录 | /help [<command>|<subject>] | 获取有关使用 jshell 工具的信息 | /set editor|start|feedback|mode|prompt|truncation|format ... | 设置配置信息 | /? [<command>|<subject>] | 获取有关使用 jshell 工具的信息 | /! | 重新运行上一个片段 -- 请参阅 /help rerun | /<id> | 按 ID 或 ID 范围重新运行片段 -- 参见 /help rerun | /-<n> | 重新运行以前的第 n 个片段 -- 请参阅 /help rerun | | 有关详细信息, 请键入 '/help', 后跟 | 命令或主题的名称。 | 例如 '/help /list' 或 '/help intro'。主题: | | intro | jshell 工具的简介 | id | 片段 ID 以及如何使用它们的说明 | shortcuts | 片段和命令输入提示, 信息访问以及 | 自动代码生成的按键说明 | context | /env /reload 和 /reset 的评估上下文选项的说明 | rerun | 重新评估以前输入片段的方法的说明
将你输入的历史代码片段保存到文件中
保存指令 /save 的语法格式:/save [-all|-history|-start]。
<文件>文件>
jshell> /save -history /users/liaowenxiong/desktop/jshell.txt
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201225.html原文链接:https://javaforall.net
