系列中的上一篇
当前教程
Jshell - Java Shell 工具
系列中的下一篇

系列中的上一篇: Java - 您的应用程序启动器

系列中的下一篇: Jar - 存档工具

Jshell - Java Shell 工具

您可以使用语言 shell 来学习 Java 语言,探索新功能和 API,以及对新代码进行原型设计。

 

介绍 jshell

jshell - 在读取-评估-打印循环 (REPL) 中交互式地评估 Java 编程语言的声明、语句和表达式

 

概要

jshell [options] [load-files]

options 命令行选项,用空格隔开。请参阅 jshell 的选项。

load-files 工具启动时运行的一个或多个脚本。脚本可以包含任何有效的代码片段或 jshell 命令。

脚本可以是本地文件,也可以是以下预定义脚本之一

DEFAULT 加载默认条目,这些条目通常用作导入。

JAVASE 导入所有 Java SE 包。

PRINTING 将 print、println 和 printf 定义为 jshell 方法,供在工具内使用。

对于多个脚本,使用空格分隔名称。脚本按在命令行中输入的顺序运行。命令行脚本在启动脚本之后运行。要启动 jshell 后运行脚本,请使用 /open 命令。

要从标准输入接受输入并抑制交互式 I/O,请为 load-files 输入一个连字符 (-)。此选项允许在管道链中使用 jshell 工具。

 

描述

jshell 提供了一种交互式地评估 Java 编程语言的声明、语句和表达式的途径,从而更轻松地学习语言、探索不熟悉的代码和 API,以及对复杂代码进行原型设计。接受 Java 语句、变量定义、方法定义、类定义、导入语句和表达式。输入的代码片段称为片段。

输入片段后,会对其进行评估,并提供反馈。反馈从结果和操作说明到无反馈不等,具体取决于输入的片段和选择的反馈模式。无论反馈模式如何,都会描述错误。从详细模式开始,在学习工具时获得最多的反馈。

命令行选项可用于在启动 jshell 时配置初始环境。在 jshell 中,可以使用命令根据需要修改环境。

可以从文件加载现有片段以初始化 jshell 会话,或者在会话中的任何时间加载。可以在会话中修改片段,以尝试不同的变体并进行更正。要保存片段以供日后使用,请将其保存到文件。

 

选项

--add-exports module/package 指定要从其定义模块中导出为已导出的包。

--add-modules module[,module...] 指定除了初始模块之外还要解析的根模块。

-Cflag 提供要传递给编译器的标志。要传递多个标志,请为每个需要的标志或标志参数提供此选项的实例。

--class-path path 指定要搜索以查找类文件的目录和存档。此选项会覆盖 CLASSPATH 环境变量中的路径。如果未设置环境变量且未使用此选项,则会搜索当前目录。

  • Linux 和 macOS,使用冒号 (:) 分隔路径中的项目。
  • Windows,使用分号 (;) 分隔项目。

--enable-preview 允许代码依赖于此版本的预览功能。

--execution specification 指定备用执行引擎,其中 specification 是 ExecutionControl 规范。有关规范的语法,请参阅包 jdk.jshell.spi 的文档。

--feedback mode 设置响应输入内容提供的反馈的初始级别。可以使用 /set feedback mode 命令在会话中覆盖初始级别。默认值为 normal。

以下值对 mode 有效

verbose 为条目提供详细反馈。操作结果之后会显示有关执行操作的附加信息。下一个提示符与反馈之间用空行隔开。

normal 提供平均数量的反馈。下一个提示符与反馈之间用空行隔开。

concise 提供最少的反馈。下一个提示符紧跟在代码片段或反馈之后。

silent 不提供任何反馈。下一个提示符紧跟在代码片段之后。

custom 根据模式的定义方式提供自定义反馈。自定义反馈模式是在 JShell 中使用 /set mode 命令创建的。

--help-h-? 打印标准选项的摘要并退出工具。

--help-extra-X 打印非标准选项的摘要并退出工具。非标准选项可能会在未经通知的情况下更改。

-Jflag 提供要传递给运行时系统的标志。要传递多个标志,请为每个需要的标志或标志参数提供此选项的实例。

--module-path modulepath 指定在何处查找应用程序模块。

  • 对于 Linux 和 macOS,使用冒号 (:) 分隔路径中的项目。
  • 对于 Windows,使用分号 (;) 分隔项目。

--no-startup 阻止启动脚本在 jshell 启动时运行。使用此选项仅运行在启动 jshell 时在命令行中输入的脚本,或者在没有输入任何脚本的情况下,在没有任何预加载信息的情况下启动 jshell。如果使用了 --startup 选项,则不能使用此选项。

-q 将反馈模式设置为 concise,这与输入 --feedback concise 相同。

-Rflag 提供要传递给远程运行时系统的标志。要传递多个标志,请为每个要传递的标志或标志参数提供此选项的实例。

-s 将反馈模式设置为 silent,这与输入 --feedback silent 相同。

--show-version 打印版本信息并进入工具。

--startup file 覆盖此会话的默认启动脚本。脚本可以包含任何有效的代码片段或命令。

脚本可以是本地文件,也可以是以下预定义脚本之一

DEFAULT 加载默认条目,这些条目通常用作导入。

JAVASE 导入所有 Java SE 包。

PRINTING 将 print、println 和 printf 定义为 jshell 方法,供在工具内使用。

对于多个脚本,请为每个脚本提供此选项的单独实例。启动脚本在 jshell 首次启动以及使用 /reset/reload/env 命令重新启动会话时运行。启动脚本按在命令行中输入的顺序运行。

如果使用了 --no-startup 选项,则不能使用此选项。

-v 将反馈模式设置为 verbose,这与输入 --feedback verbose 相同。

--version 打印版本信息并退出工具。

 

命令

jshell 工具中,命令用于修改环境和管理代码片段。

/drop {name|id|startID-endID} [{name|id|startID-endID}...] 删除由名称、ID 或 ID 范围标识的片段,使其处于非活动状态。对于 ID 范围,请提供用连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项目。使用 /list 命令查看代码片段的 ID。

/edit [option] 打开编辑器。如果未输入任何选项,则编辑器将打开并显示活动片段。

以下选项有效

{name|id|startID-endID} [{name|id|startID-endID}...] 使用由名称、ID 或 ID 范围标识的片段打开编辑器。对于 ID 范围,请提供用连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项目。使用 /list 命令查看代码片段的 ID。

-all 使用所有片段打开编辑器,包括启动片段以及失败、被覆盖或被删除的片段。

-start 使用启动时评估的启动片段打开编辑器。要退出编辑模式,请关闭编辑器窗口,或者如果在设置编辑器时使用了 -wait 选项,则响应提供的提示符。

使用 /set editor 命令指定要使用的编辑器。如果未设置编辑器,则会按以下顺序检查环境变量:JSHELLEDITORVISUALEDITOR。如果在 JShell 中未设置编辑器且未设置任何编辑器环境变量,则会使用简单的默认编辑器。

/env [options] 显示环境设置,或更新环境设置并重新启动会话。如果未输入任何选项,则会显示当前环境设置。如果输入了一个或多个选项,则会按以下方式重新启动会话

  • 使用提供的选项更新环境设置
  • 重置执行状态。
  • 运行启动脚本。
  • 以输入顺序静默地重播历史记录。历史记录包括在 jshell 提示符处、在命令行中输入的脚本或使用 /open 命令输入的脚本中输入的所有有效片段或 /drop 命令。

在命令行中输入或使用先前的 /reset/env/reload 命令提供的环境设置将被保留,除非输入了覆盖该设置的选项。

以下选项有效

--add-modules module[,module...] 指定除了初始模块之外还要解析的根模块。

--add-exports source-module/package=target-module[,target-module]* 将 package 从 source-module 导出到 target-module。

--class-path path 指定要搜索以查找类文件的目录和存档。此选项会覆盖 CLASSPATH 环境变量中的路径。如果未设置环境变量且未使用此选项,则会搜索当前目录。

  • 对于 Linux 和 macOS,使用冒号 (:) 分隔路径中的项目。
  • 对于 Windows,使用分号 (;) 分隔项目。

--module-path modulepath 指定在何处查找应用程序模块。

  • 对于 Linux 和 macOS,使用冒号 (:) 分隔路径中的项目。
  • 对于 Windows,使用分号 (;) 分隔项目。

/exit [整数表达式片段] 退出工具。如果没有输入片段,则退出状态为零。如果输入了片段,并且片段的结果是整数,则结果将用作退出状态。如果发生错误,或者片段的结果不是整数,则会显示错误,并且工具将保持活动状态。

/history 显示本会话中输入的内容。

/help [命令|主题] 显示有关命令和主题的信息。如果没有输入选项,则显示所有命令的信息摘要和可用主题的列表。如果提供了有效的命令,则显示该命令的扩展信息。如果输入了有效的主题,则显示有关该主题的信息。

以下主题值有效

context 描述可用于配置环境的选项。

intro 提供对工具的介绍。

shortcuts 描述用于完成命令和片段的击键。请参阅输入快捷键。

/imports 显示当前活动的导入,包括来自启动脚本和在启动 jshell 时在命令行上输入的脚本的导入。

/list [选项] 显示片段及其 ID 的列表。如果没有输入选项,则显示所有活动片段,但不包括启动片段。

以下选项有效

{名称|ID|开始ID-结束ID} [{名称|ID|开始ID-结束ID}...] 显示由名称、ID 或 ID 范围标识的片段。对于 ID 范围,请提供以连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项目。

-all 显示所有片段,包括启动片段以及失败、被覆盖或被删除的片段。以 s 开头的 ID 是启动片段。以 e 开头的 ID 是失败的片段。

-start 显示在启动 JShell 时评估的启动片段。

/methods [选项] 显示有关输入的方法的信息。如果没有输入选项,则显示所有活动方法的名称、参数类型和返回类型。

以下选项有效

{名称|ID|开始ID-结束ID} [{名称|ID|开始ID-结束ID}...] 显示由名称、ID 或 ID 范围标识的方法的信息。对于 ID 范围,请提供以连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项目。使用 /list 命令查看代码片段的 ID。

-all 显示所有方法的信息,包括在启动 JShell 时添加的方法,以及失败、被覆盖或被删除的方法。

-start 显示在启动 JShell 时添加的启动方法的信息。

/open 文件 打开指定的脚本并将片段读入工具。脚本可以是本地文件,也可以是以下预定义脚本之一

DEFAULT 加载默认条目,这些条目通常用作导入。

JAVASE 导入所有 Java SE 包。

PRINTING 将 print、println 和 printf 定义为 jshell 方法,供工具内使用。

/reload [选项] 重新启动会话,如下所示

  • 使用提供的选项(如果有)更新环境设置。
  • 重置执行状态。
  • 运行启动脚本。
  • 按输入顺序重播历史记录。历史记录包括在 jshell 提示符处输入的所有有效片段或 /drop 命令,以及在命令行上输入的脚本或使用 /open 命令输入的脚本。

在命令行中输入或使用先前的 /reset/env/reload 命令提供的环境设置将被保留,除非输入了覆盖该设置的选项。

以下选项有效

--add-modules module[,module...] 指定除了初始模块之外还要解析的根模块。

--add-exports source-module/package=target-module[,target-module]* 将 package 从 source-module 导出到 target-module。

--class-path 路径 指定搜索以查找类文件的目录和存档。此选项将覆盖 CLASSPATH 环境变量中的路径。如果环境变量未设置且未使用此选项,则搜索当前目录。对于 Linux 和 macOS,使用冒号 (:) 分隔路径中的项目。对于 Windows,使用分号 (;) 分隔项目。

--module-path 模块路径 指定在何处查找应用程序模块。对于 Linux 和 macOS,使用冒号 (:) 分隔路径中的项目。对于 Windows,使用分号 (;) 分隔项目。

-quiet 重播有效的历史记录,但不显示它。显示错误。

-restore 将环境重置为工具上次运行时的开始状态,或重置为上次在工具上次运行时执行 /reset、/reload 或 /env 命令时的状态。从那时起,有效的历史记录将被重播。使用此选项恢复以前的 JShell 会话。

/reset [选项] 丢弃所有输入的片段并重新启动会话,如下所示

  • 使用提供的选项(如果有)更新环境设置。
  • 重置执行状态。
  • 运行启动脚本。

历史记录不会被重播。所有输入的代码都会丢失。

在命令行上输入或使用以前的 /reset、/env 或 /reload 命令提供的环境设置将被保留,除非输入了覆盖该设置的选项。

以下选项有效

--add-modules module[,module...] 指定除了初始模块之外还要解析的根模块。

--add-exports source-module/package=target-module[,target-module]* 将 package 从 source-module 导出到 target-module。

--class-path path 指定要搜索以查找类文件的目录和存档。此选项会覆盖 CLASSPATH 环境变量中的路径。如果未设置环境变量且未使用此选项,则会搜索当前目录。

  • 对于 Linux 和 macOS,使用冒号 (:) 分隔路径中的项目。
  • 对于 Windows,使用分号 (;) 分隔项目。

--module-path 模块路径 指定在何处查找应用程序模块。对于 Linux 和 macOS,使用冒号 (:) 分隔路径中的项目。对于 Windows,使用分号 (;) 分隔项目。

/save [选项] 文件 将片段和命令保存到指定的文件。如果没有输入选项,则保存活动片段。

以下选项有效

{名称|ID|开始ID-结束ID} [{名称|ID|开始ID-结束ID}...] 保存由名称、ID 或 ID 范围标识的片段和命令。对于 ID 范围,请提供以连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项目。使用 /list 命令查看代码片段的 ID。

-all 保存所有片段,包括启动片段以及被覆盖或失败的片段。

-history 保存当前会话中输入的所有命令和片段的顺序历史记录。

-start 保存当前启动设置。如果未提供启动脚本,则保存一个空文件。

/set [设置] 设置配置信息,包括外部编辑器、启动设置和反馈模式。此命令还用于创建具有自定义提示、格式和截断值的自定义反馈模式。如果没有输入设置,则显示编辑器、启动设置和反馈模式的当前设置。

以下值对设置有效

editor [选项] [命令] 设置在输入 /edit 命令时用于启动外部编辑器的命令。该命令可以包含用空格分隔的命令参数。如果没有输入命令或选项,则显示当前设置。

以下选项有效

-default 将编辑器设置为 JShell 提供的默认编辑器。如果输入了用于启动编辑器的命令,则不能使用此选项。

-delete 将编辑器设置为会话开始时生效的编辑器。如果与 -retain 选项一起使用,则会删除保留的编辑器设置,并将编辑器设置为以下找到的第一个环境变量:JSHELLEDITORVISUALEDITOR。如果未设置任何编辑器环境变量,则此选项将编辑器设置为默认编辑器。

如果输入了用于启动编辑器的命令,则不能使用此选项。

-retain 在会话之间保存编辑器设置。如果没有其他选项或命令输入,则保存当前设置。

-wait 提示用户指示编辑何时完成。否则,当编辑器退出时,控制权将返回到 JShell。如果正在使用的编辑器立即退出,例如,当编辑窗口已存在时,请使用此选项。此选项仅在输入了用于启动编辑器的命令时才有效。

feedback [模式] 设置用于响应输入的反馈模式。如果没有输入模式,则显示当前模式。

以下模式有效:concisenormalsilentverbose 以及使用 /set 模式命令创建的任何自定义模式。

format 模式 字段 "格式字符串" 选择器 设置对输入的响应中提供的反馈的格式。如果没有输入模式,则显示所有反馈模式的所有字段的当前格式。如果只输入模式,则显示该模式的当前格式。如果只输入模式和字段,则显示该字段的当前格式。

要定义格式,需要以下参数

模式 指定将响应格式应用到的反馈模式。只能修改使用 /set 模式命令创建的自定义模式。

字段 指定将响应格式应用到的特定于上下文的字段。这些字段在联机帮助中进行了描述,可以通过 jshell 使用 /help /set format 命令访问联机帮助。

格式字符串 指定用作指定字段和选择器的响应格式的字符串。格式字符串的结构在联机帮助中进行了描述,可以通过 JShell 使用 /help /set format 命令访问联机帮助。

选择器 指定应用响应格式的上下文。这些选择器在联机帮助中进行了描述,可以通过 jshell 使用 /help /set format 命令访问联机帮助。

mode [模式名称] [现有模式] [选项] 使用提供的模式名称创建自定义反馈模式。如果没有输入模式名称,则显示所有模式的设置,包括模式、提示、格式和截断设置。如果提供了现有模式的名称,则将现有模式的设置复制到正在创建的模式。

以下选项有效

-command|-quiet 指定在使用该模式时显示的命令反馈级别。创建反馈模式时需要此选项。使用 -command 显示命令的信息和验证反馈。使用 -quiet 仅显示命令的基本反馈,例如错误消息。

-delete 删除此会话的命名反馈模式。需要删除模式的名称。要永久删除保留的模式,请将 -retain 选项与该选项一起使用。无法删除预定义模式。

-retain 在会话之间保存命名反馈模式。需要保留模式的名称。使用 /set prompt/set format/set truncation 命令配置新的反馈模式。

要开始使用新模式,请使用 /set feedback 命令。

prompt 模式 "提示字符串" "继续提示字符串" 设置 JShell 中输入的提示。如果没有输入模式,则显示所有反馈模式的当前提示。如果只输入模式,则显示该模式的当前提示。

要定义提示,需要以下参数

mode 指定要应用提示的反馈模式。只能修改使用 /set 模式命令创建的自定义模式。

prompt-string 指定用作输入第一行的提示的字符串。

continuation-prompt-string 指定用作完成代码片段所需的额外输入行的提示的字符串。

start [-retain] [file [file...]|option] 设置在输入下一个 /reset/reload/env 命令时使用的启动脚本的名称。如果输入了多个脚本,则按输入顺序运行这些脚本。如果未输入任何脚本或选项,则显示当前启动设置。

脚本可以是本地文件,也可以是以下预定义脚本之一

DEFAULT 加载默认条目,这些条目通常用作导入。JAVASE 导入所有 Java SE 包。PRINTING 将 print、println 和 printf 定义为 jshell 方法,以便在工具内使用。以下选项有效

-default 将启动设置设置为默认设置。

-none 指定不使用任何启动设置。使用 -retain 选项在会话之间保存启动设置。

truncation mode length selector 设置显示值的最大长度。如果未输入模式,则显示所有反馈模式的当前截断值。如果只输入一个模式,则显示该模式的当前截断值。

要定义截断值,需要以下参数

mode 指定要应用截断值的反馈模式。只能修改使用 /set 模式命令创建的自定义模式。

length 指定用作指定选择器最大长度的无符号整数。

selector 指定应用截断值的上下文。选择器在联机帮助中进行了描述,可以通过 jshell 使用 /help /set truncation 命令访问联机帮助。

/types [option] 显示已输入的类、接口和枚举。如果未输入任何选项,则显示所有当前活动的类、接口和枚举。

以下选项有效

{name|id|startID-endID} [{name|id|startID-endID}...] 显示由名称、ID 或 ID 范围标识的类、接口和枚举的信息。对于 ID 范围,请提供以连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项目。使用 /list 命令查看代码片段的 ID。

-all 显示所有类、接口和枚举的信息,包括 JShell 启动时添加的类、接口和枚举,以及失败、被覆盖或被删除的类、接口和枚举。

-start 显示 JShell 启动时添加的启动类、接口和枚举的信息。

/vars [option] 显示已输入的变量的名称、类型和值。如果未输入任何选项,则显示所有当前活动的变量。

以下选项有效

{name|id|startID-endID} [{name|id|startID-endID}...] 显示由名称、ID 或 ID 范围标识的变量的信息。对于 ID 范围,请提供以连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项目。使用 /list 命令查看代码片段的 ID。

-all 显示所有变量的信息,包括 JShell 启动时添加的变量,以及失败、被覆盖或被删除的变量。

-start 显示 JShell 启动时添加的启动变量的信息。/? 与 /help 命令相同。

/! 重新运行最后一个代码片段。

/{name|id|startID-endID} [{name|id|startID-endID}...] 重新运行由 ID、ID 范围或名称标识的代码片段。对于 ID 范围,请提供以连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项目。列表中的第一个项目必须是 ID 或 ID 范围。使用 /list 命令查看代码片段的 ID。

/-n 重新运行倒数第 n 个代码片段。例如,如果输入了 15 个代码片段,则 /-4 运行第 11 个代码片段。命令不包括在计数中。

 

输入快捷方式

以下快捷方式可用于在 JShell 中输入命令和代码片段。

制表符补全

在输入代码片段、命令、子命令、命令参数或命令选项时,使用 Tab 键自动完成该项目。如果无法从已输入的内容中确定该项目,则会提供可能的选项。

在输入方法调用时,在方法调用左括号后使用 Tab 键查看方法的参数。如果该方法有多个签名,则会显示所有签名。第二次按 Tab 键会显示方法的描述以及第一个签名的参数。继续按 Tab 键查看任何其他签名的描述。

Shift+ V 在输入完整表达式后,使用此键序列将表达式转换为由表达式类型确定的类型变量声明。

Shift+ M 在输入完整表达式或语句后,使用此键序列将表达式或语句转换为方法声明。如果输入了表达式,则返回类型将基于表达式的类型。

Shift+ I 当输入无法解析的标识符时,使用此键序列显示可能的导入,这些导入根据指定类路径的内容解析标识符。

命令缩写

如果缩写唯一地标识命令,则接受命令的缩写。例如,/l 被识别为 /list 命令。但是,/s 不是有效的缩写,因为无法确定是指 /set 命令还是 /save 命令。使用 /se 表示 /set 命令,使用 /sa 表示 /save 命令。

缩写也适用于子命令、命令参数和命令选项。例如,使用 /m -a 显示所有方法。

历史记录导航

在会话之间维护已输入内容的历史记录。使用向上和向下箭头滚动浏览当前和过去会话中的命令和代码片段。使用 Ctrl 键与向上和向下箭头组合,跳过多行代码片段的第一行以外的所有行。

使用 Ctrl+R 键组合搜索历史记录中输入的字符串。提示符将更改为显示字符串和匹配项。Ctrl+R 从历史记录中的当前位置向后搜索,遍历更早的条目。Ctrl+S 从历史记录中的当前位置向前搜索,遍历更晚的条目。

输入编辑

JShell 的编辑功能类似于其他常用 shell。键盘键和键组合提供行编辑快捷方式。Ctrl 键和 Meta 键用于键组合。如果您的键盘没有 Meta 键,则 Alt 键通常映射为提供 Meta 键功能。

 

启动和停止 jshell 会话的示例

jshell 与 JDK 一起提供。要启动会话,请在命令行中输入 jshell。将打印欢迎消息,并提供用于输入命令和代码片段的提示符。

jshell
|  Welcome to JShell -- Version 16
|  For an introduction type: /help intro

jshell>

要查看 JShell 启动时自动加载了哪些代码片段,请使用 /list -start 命令。默认启动代码片段是常见包的导入语句。每个代码片段的 ID 都以字母 s 开头,表示它是启动代码片段。

jshell> /list -start

  s1 : import java.io.*;
  s2 : import java.math.*;
  s3 : import java.net.*;
  s4 : import java.nio.file.*;
  s5 : import java.util.*;
  s6 : import java.util.concurrent.*;
  s7 : import java.util.function.*;
  s8 : import java.util.prefs.*;
  s9 : import java.util.regex.*;
 s10 : import java.util.stream.*;

要结束会话,请使用 /exit 命令。

jshell> /exit
|  Goodbye

%

 

输入代码片段的示例

代码片段是 Java 语句、变量定义、方法定义、类定义、导入语句和表达式。如果缺少终止分号,则会自动在完成的代码片段末尾添加终止分号。

以下示例显示了定义了两个变量和一个方法,以及运行该方法。请注意,由于没有提供变量,因此会自动创建一个 scratch 变量来保存结果。

jshell> int a=4
a ==> 4

jshell> int b=8
b ==> 8

jshell> int square(int i1) {
   ...> return i1 * i1;
   ...> }
|  created method square(int)

jshell> square(b)
$5 ==> 64

 

更改代码片段的示例

通过再次输入变量、方法或类的定义来更改其定义。

以下示例显示了定义方法并运行该方法

jshell> String grade(int testScore) {
...>     if (testScore >= 90) {
...>         return "Pass";
...>     }
...>     return "Fail";
...> }
|  created method grade(int)

jshell> grade(88)
$3 ==> "Fail"

要更改评分方法以允许更多学生通过,请重新输入方法定义并将及格分数更改为 80。使用向上箭头键检索之前的条目,以避免重新输入它们并在 if 语句中进行更改。以下示例显示了新的定义并重新运行方法以显示新结果

jshell> String grade(int testScore) {
...>     if (testScore >= 80) {
...>         return "Pass";
...>     }
...>     return "Fail";
...> }
|  modified method grade(int)

jshell> grade(88)
$5 ==> "Pass"

对于超过几行的代码片段,或者要进行多个更改,请使用 /edit 命令在编辑器中打开代码片段。更改完成后,关闭编辑窗口以将控制权返回到 jshell 会话。以下示例显示了命令以及关闭编辑窗口时提供的反馈。/list 命令用于显示及格分数已更改为 85。

jshell> /edit grade
|  modified method grade(int)
jshell> /list grade

   6 : String grade(int testScore) {
           if (testScore >= 85) {
               return "Pass";
           }
           return "Fail";
       }

 

创建自定义反馈模式的示例

反馈模式决定显示的提示、输入代码片段时提供的反馈消息以及显示值的最大长度。提供预定义的反馈模式。还提供用于创建自定义反馈模式的命令。

使用 /set 模式命令创建新的反馈模式。在以下示例中,新模式 mymode 基于预定义的反馈模式 normal,并显示验证命令反馈

jshell> /set mode mymode normal -command
|  Created new feedback mode: mymode

由于新模式基于 normal 模式,因此提示相同。以下示例显示了如何查看使用哪些提示,然后将提示更改为自定义字符串。第一个字符串表示标准 JShell 提示。第二个字符串表示多行代码片段中附加行的提示。

jshell> /set prompt mymode
|  /set prompt mymode "\njshell> " "   ...> "

jshell> /set prompt mymode "\nprompt$ " "   continue$ "

显示值的最大长度由截断设置控制。不同类型的值可以具有不同的长度。以下示例将整体截断值设置为 72,并将变量值表达式的截断值设置为 500

jshell> /set truncation mymode 72
jshell> /set truncation mymode 500 varvalue

输入代码片段后显示的反馈由格式设置控制,并基于输入的代码片段类型以及对该代码片段采取的操作。在预定义模式 normal 中,创建方法时会显示创建的字符串。以下示例显示了如何将该字符串更改为已定义

jshell> /set format mymode action "defined" added-primary

使用 /set feedback 命令开始使用刚刚创建的反馈模式。以下示例显示了自定义模式的使用情况

jshell> /set feedback mymode
|  Feedback mode: mymode

prompt$ int square (int num1){
   continue$ return num1*num1;
   continue$ }
|  defined method square(int)

prompt$

更多学习


上次更新: 2021 年 9 月 14 日


系列中的上一篇
当前教程
Jshell - Java Shell 工具
系列中的下一篇

系列中的上一篇: Java - 您的应用程序启动器

系列中的下一篇: Jar - 存档工具