名称
jshell - 交互式地在Java编程语言的读取-求值-打印循环(REPL)中评估声明、语句和表达式
概要
jshell
[选项] [加载文件]
- 选项
- 由空格分隔的命令行选项。请参阅jshell的选项。
- 加载文件
-
在启动工具时要运行的一个或多个脚本。脚本可以包含任何有效的代码片段或JShell命令。
脚本可以是本地文件,也可以是以下预定义脚本之一:
-
DEFAULT
- 加载默认条目,通常用作导入。
-
JAVASE
- 导入所有Java SE包。
-
PRINTING
-
将
print
、println
和printf
定义为jshell
工具内部使用的方法。 -
TOOLING
-
定义
javac
、jar
和其他方法,通过它们的命令行界面在jshell
工具内运行JDK工具。
对于多个脚本,请使用空格分隔名称。脚本按照它们在命令行中输入的顺序运行。命令行脚本在启动脚本之后运行。要在启动后运行脚本,请使用
/open
命令。要从标准输入接受输入并抑制交互式I/O,请为加载文件输入连字符(-)。此选项允许在管道链中使用
jshell
工具。 -
描述
JShell提供了一种交互式地评估Java编程语言的声明、语句和表达式的方式,使学习语言、探索陌生代码和API以及原型化复杂代码变得更容易。Java语句、变量定义、方法定义、类定义、导入语句和表达式都是被接受的。输入的代码片段被称为片段。
随着片段的输入,它们被评估,并提供反馈。反馈因输入的片段和选择的反馈模式而异,从结果和操作说明到无反馈,具体取决于片段。无论反馈模式如何,错误都会被描述。在学习工具时,从详细模式开始以获得最多的反馈。
在启动JShell时,可以使用命令行选项配置初始环境。在JShell内部,可以使用命令修改环境。
现有的片段可以从文件加载以初始化JShell会话,或在会话中的任何时候加载。可以在会话中修改片段以尝试不同的变体并进行更正。要保留片段以供以后使用,请将它们保存到文件中。
jshell的选项
-
--add-exports
模块/包 - 指定要视为从其定义模块导出的包。
-
--add-modules
模块[,
模块...] - 指定要解析的根模块,以及初始模块。
-
-C
标志 - 提供要传递给编译器的标志。要传递多个标志,请为每个所需的标志或标志参数提供此选项的实例。
-
--class-path
路径 -
指定要搜索以定位类文件的目录和存档。此选项会覆盖
CLASSPATH
环境变量中的路径。如果未设置环境变量且未使用此选项,则会搜索当前目录。对于Linux和macOS,请使用冒号(:)分隔路径中的项目。对于Windows,请使用分号(;)分隔项目。 -
--enable-preview
- 允许代码依赖于此版本的预览功能。
-
--execution
规范 - 指定替代执行引擎,其中规范是ExecutionControl规范。请参阅jdk.jshell.spi包的文档以获取规范的语法。
-
--feedback
模式 -
设置响应输入时提供的反馈的初始级别。可以在会话中使用
/set feedback
模式命令覆盖初始级别。默认值为normal
。以下值对于模式是有效的:
-
verbose
- 为条目提供详细反馈。在操作结果后显示有关执行的其他信息。下一个提示符与反馈之间用空行分隔。
-
normal
- 提供平均量的反馈。下一个提示符与反馈之间用空行分隔。
-
concise
- 提供最少的反馈。下一个提示符紧随代码片段或反馈之后。
-
silent
- 不提供反馈。下一个提示符紧随代码片段之后。
- custom
-
根据模式定义的方式提供自定义反馈。在JShell内部使用
/set mode
命令创建自定义反馈模式。
-
-
--help
或-h
或-?
- 打印标准选项摘要并退出工具。
-
--help-extra
或-X
- 打印非标准选项摘要并退出工具。非标准选项可能会在不事先通知的情况下更改。
-
-J
标志 - 提供要传递给运行时系统的标志。要传递多个标志,请为每个所需的标志或标志参数提供此选项的实例。
-
--module-path
模块路径 - 指定应用程序模块的位置。对于Linux和macOS,请使用冒号(:)分隔路径中的项目。对于Windows,请使用分号(;)分隔项目。
-
--no-startup
-
防止JShell启动时运行启动脚本。使用此选项仅在JShell启动时运行输入的命令行脚本,或者如果未输入脚本,则启动JShell而不加载任何预加载信息。如果使用了
--startup
选项,则无法使用此选项。 -
-q
-
将反馈模式设置为
concise
,与输入--feedback concise
相同。 -
-R
标志 - 提供要传递给远程运行时系统的标志。要传递多个标志,请为每个所需的标志或标志参数提供此选项的实例。
-
-s
-
将反馈模式设置为
silent
,与输入--feedback silent
相同。 -
--show-version
- 打印版本信息并进入工具。
-
--startup
文件 -
覆盖此会话的默认启动脚本。脚本可以包含任何有效的代码片段或命令。
脚本可以是本地文件,也可以是以下预定义脚本之一:
-
DEFAULT
- 加载默认条目,通常用作导入。
-
JAVASE
- 导入所有Java SE包。
-
PRINTING
-
将
print
、println
和printf
定义为jshell
工具内部使用的方法。 -
TOOLING
-
定义
javac
、jar
和其他方法,通过它们的命令行界面在jshell
工具内运行JDK工具。
对于多个脚本,请为每个脚本提供此选项的单独实例。启动脚本在首次启动JShell时运行,并在使用
/reset
、/reload
或/env
命令重新启动会话时运行。启动脚本按照它们在命令行中输入的顺序运行。如果使用了
--no-startup
选项,则无法使用此选项。 -
-
-v
-
将反馈模式设置为
verbose
,与输入--feedback verbose
相同。 -
--version
- 打印版本信息并退出工具。
jshell命令
在jshell
工具内部,使用命令修改环境并管理代码片段。
-
/drop
{名称|id|startID-
endID} [{名称|id|startID-
endID}...] -
删除由名称、ID或ID范围标识的片段,使其无效。对于ID范围,请提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。使用
/list
命令查看代码片段的ID。 -
/edit
[选项] -
打开编辑器。如果未输入选项,则编辑器将打开活动片段。
以下选项有效:
-
{名称|id|startID
-
endID} [{名称|id|startID-
endID}...] -
使用由名称、ID或ID范围标识的片段打开编辑器。对于ID范围,请提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。使用
/list
命令查看代码片段的ID。 -
-all
- 使用所有片段打开编辑器,包括启动片段和失败、被覆盖或被删除的片段。
-
-start
- 使用在启动JShell时评估的启动片段打开编辑器。
-wait
选项,则回应提供的提示。使用
/set editor
命令指定要使用的编辑器。如果未设置编辑器,则按顺序检查以下环境变量:JSHELLEDITOR
、VISUAL
和EDITOR
。如果在JShell中未设置编辑器且未设置任何编辑器环境变量,则使用简单的默认编辑器。 -
{名称|id|startID
-
/env
[选项] -
显示环境设置,或更新环境设置并重新启动会话。如果未输入选项,则显示当前环境设置。如果输入一个或多个选项,则会话将按以下方式重新启动:
-
使用提供的选项更新环境设置。
-
重置执行状态。
-
运行启动脚本。
-
以输入顺序默默重放历史记录。历史记录包括在
jshell
提示符下输入的所有有效片段或/drop
命令,在命令行上输入的脚本或使用/open
命令输入的脚本。
/reset
、/env
或/reload
命令中提供的环境设置将保留,除非输入覆盖设置的 选项。以下选项有效:
-
--add-modules
模块[,
模块...] - 指定要解析的根模块,以及初始模块。
-
--add-exports
源模块/
包=
目标模块[,
目标模块]* - 将包从源模块添加到目标模块的导出。
-
--class-path
路径 -
指定要搜索以查找类文件的目录和存档。此选项将覆盖
CLASSPATH
环境变量中的路径。如果未设置环境变量且未使用此选项,则将搜索当前目录。对于Linux和macOS,请使用冒号(:
)分隔路径中的项目。对于Windows,请使用分号(;
)分隔项目。 -
--module-path
模块路径 -
指定应用程序模块的位置。对于Linux和macOS,请使用冒号(
:
)分隔路径中的项目。对于Windows,请使用分号(;
)分隔项目。
-
-
/exit
[整数表达式片段] - 退出工具。如果未输入片段,则退出状态为零。如果输入片段且片段的结果为整数,则结果将用作退出状态。如果发生错误,或者片段的结果不是整数,则会显示错误,工具保持活动状态。
-
/history
- 显示在此会话中输入的内容。
-
/help
[命令|主题] -
显示有关命令和主题的信息。如果未输入选项,则显示所有命令的信息摘要和可用主题列表。如果提供有效命令,则显示该命令的详细信息。如果输入有效主题,则显示有关该主题的信息。
主题的以下值有效:
-
context
- 描述用于配置环境的选项。
-
intro
- 提供工具的简介。
-
shortcuts
- 描述用于完成命令和片段的按键。请参阅输入快捷键。
-
-
/imports
- 显示当前活动的导入,包括启动脚本和在启动JShell时在命令行上输入的脚本。
-
/list
[选项] -
显示片段及其ID的列表。如果未输入选项,则显示所有活动片段,但不包括启动片段。
以下选项有效:
-
{名称|id|startID
-
endID} [{名称|id|startID-
endID}...] - 显示由名称、ID或ID范围标识的片段。对于ID范围,请提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。
-
-all
-
显示所有片段,包括启动片段和失败、被覆盖或被删除的片段。以
s
开头的ID是启动片段。以e
开头的ID是失败的片段。 -
-start
- 显示在启动JShell时评估的启动片段。
-
{名称|id|startID
-
/methods
[选项] -
显示输入的方法的信息。如果未输入选项,则显示所有活动方法的名称、参数类型和返回类型。
以下选项有效:
-
{名称|id|startID
-
endID} [{名称|id|startID-
endID}...] -
显示由名称、ID或ID范围标识的方法的信息。对于ID范围,请提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。使用
/list
命令查看代码片段的ID。 -
-all
- 显示所有方法的信息,包括启动JShell时添加的方法,以及失败、被覆盖或被删除的方法。
-
-start
- 显示在启动JShell时添加的启动方法的信息。
-
{名称|id|startID
-
/open
文件 -
打开指定的脚本并将片段读入工具。脚本可以是本地文件或以下预定义脚本之一:
-
DEFAULT
- 加载默认条目,通常用作导入。
-
JAVASE
- 导入所有Java SE包。
-
PRINTING
-
将
print
、println
和printf
定义为jshell
工具内部使用的方法。 -
TOOLING
-
定义
javac
、jar
和其他通过命令行界面在jshell
工具内运行JDK工具的方法。
-
-
/reload
[选项] -
重新启动会话,具体操作如下:
-
使用提供的选项更新环境设置(如果有)。
-
重置执行状态。
-
运行启动脚本。
-
按输入顺序重放历史记录。历史记录包括在
jshell
提示符下输入的所有有效片段或/drop
命令,在命令行上输入的脚本或使用/open
命令输入的脚本。
/reset
、/env
或/reload
命令中提供的环境设置将保留,除非输入覆盖设置的 选项。以下选项有效:
-
--add-modules
模块[,
模块...] - 指定要解析的根模块,以及初始模块。
-
--add-exports
源模块/
包=
目标模块[,
目标模块]* - 将包从源模块添加到目标模块的导出。
-
--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]* - 将来自 source-module 的 package 导出到 target-module。
-
--class-path
path -
指定要搜索以查找类文件的目录和存档。此选项会覆盖
CLASSPATH
环境变量中的路径。如果环境变量未设置且未使用此选项,则会搜索当前目录。对于 Linux 和 macOS,请使用冒号(:
)分隔路径中的项目。对于 Windows,请使用分号(;
)分隔项目。 -
--module-path
modulepath -
指定应用程序模块的位置。对于 Linux 和 macOS,请使用冒号(
:
)分隔路径中的项目。对于 Windows,请使用分号(;
)分隔项目。
-
-
/save
[options] file -
将片段和命令保存到指定的文件中。如果未输入任何选项,则保存活动片段。
以下选项有效:
-
{name|id|startID
-
endID} [{name|id|startID-
endID}...] -
保存由名称、ID 或 ID 范围标识的片段和命令。对于 ID 范围,请提供以连字符分隔的起始 ID 和结束 ID。要提供列表,请使用空格分隔列表中的项目。使用
/list
命令查看代码片段的 ID。 -
-all
- 保存所有片段,包括启动片段和被覆盖或失败的片段。
-
-history
- 保存当前会话中输入的所有命令和片段的顺序历史记录。
-
-start
- 保存当前的启动设置。如果未提供启动脚本,则保存一个空文件。
-
{name|id|startID
-
/set
[setting] -
设置配置信息,包括外部编辑器、启动设置和反馈模式。此命令还用于创建具有自定义提示、格式和截断值的自定义反馈模式。如果未输入任何设置,则显示当前编辑器、启动设置和反馈模式的设置。
以下值对
setting
有效:-
editor
[选项] [命令] -
设置在输入
/edit
命令时启动外部编辑器的命令。命令可以包括由空格分隔的命令参数。如果未输入命令或选项,则显示当前设置。以下选项有效:
-
-default
- 将编辑器设置为JShell提供的默认编辑器。如果输入了用于启动编辑器的命令,则无法使用此选项。
-
-delete
-
将编辑器设置为会话启动时有效的编辑器。如果与
-retain
选项一起使用,则删除保留的编辑器设置,并将编辑器设置为找到的以下环境变量中的第一个:JSHELLEDITOR
、VISUAL
或EDITOR
。如果未设置任何编辑器环境变量,则此选项将编辑器设置为默认编辑器。如果输入了用于启动编辑器的命令,则无法使用此选项。
-
-retain
- 保存跨会话的编辑器设置。如果未输入其他选项或命令,则保存当前设置。
-
-wait
- 提示用户指示何时完成编辑。否则,当编辑器退出时,控制返回到JShell。如果正在使用的编辑器立即退出,例如,当编辑窗口已存在时,请使用此选项。仅当输入用于启动编辑器的命令时,此选项有效。
-
-
feedback
[模式] -
设置用于响应输入的反馈模式。如果未输入模式,则显示当前模式。
以下模式有效:
concise
、normal
、silent
、verbose
,以及使用/set mode
命令创建的任何自定义模式。 -
format
模式 字段"
格式字符串"
选择器 -
设置响应输入时提供的反馈的格式。如果未输入模式,则显示所有反馈模式的所有字段的当前格式。如果仅输入了模式,则显示该模式的当前格式。如果仅输入了模式和字段,则显示该字段的当前格式。
要定义格式,需要以下参数:
- 模式
-
指定应用响应格式的反馈模式。只能修改使用
/set mode
命令创建的自定义模式。 - 字段
-
指定应用响应格式的上下文特定字段。字段在在线帮助中描述,可通过在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内输入的提示。如果未输入模式,则显示所有反馈模式的当前提示。如果仅输入了模式,则显示该模式的当前提示。
要定义提示,需要以下参数:
- 模式
-
指定应用提示的反馈模式。只能修改使用
/set mode
命令创建的自定义模式。 -
"
提示字符串"
- 指定要用作输入第一行的提示的字符串。
-
"
继续提示字符串"
- 指定要用作需要完成代码片段的附加输入行的提示的字符串。
-
start
[-retain
] [文件 [文件...]|选项] -
设置在输入下一个
/reset
、/reload
或/env
命令时使用的启动脚本的名称。如果输入多个脚本,则按输入顺序运行这些脚本。如果未输入脚本或选项,则显示当前启动设置。脚本可以是本地文件或以下预定义脚本之一:
-
DEFAULT
- 加载默认条目,通常用作导入。
-
JAVASE
- 导入所有Java SE包。
-
PRINTING
-
将
print
、println
和printf
定义为jshell
工具内可用的方法。 -
TOOLING
-
定义
javac
、jar
和其他通过其命令行界面在jshell
工具内运行JDK工具的方法。
以下选项有效:
-
-default
- 将启动设置设置为默认设置。
-
-none
- 指定不使用任何启动设置。
使用
-retain
选项保存启动设置跨会话。 -
-
truncation
模式 长度 选择器 -
设置显示值的最大长度。如果未输入模式,则显示所有反馈模式的当前截断值。如果仅输入了模式,则显示该模式的当前截断值。
要定义截断值,需要以下参数:
- 模式
-
指定应用截断值的反馈模式。只能修改使用
/set mode
命令创建的自定义模式。 - 长度
- 指定要用作指定选择器的最大长度的无符号整数。
- 选择器
-
指定应用截断值的上下文。选择器在在线帮助中描述,可通过在JShell中使用
/help /set truncation
命令访问。
-
-
/types
[选项] -
显示输入的类、接口和枚举。如果未输入选项,则显示所有当前活动的类、接口和枚举。
以下选项有效:
-
{名称|id|startID
-
endID} [{名称|id|startID-
endID}...] -
显示按名称、ID或ID范围标识的类、接口和枚举的信息。对于ID范围,提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。使用
/list
命令查看代码片段的ID。 -
-all
- 显示所有类、接口和枚举的信息,包括JShell启动时添加的类、接口和枚举,以及失败、被覆盖或被删除的类、接口和枚举。
-
-start
- 显示在JShell启动时添加的启动类、接口和枚举的信息。
-
{名称|id|startID
-
/vars
[选项] -
显示输入的变量的名称、类型和值。如果未输入选项,则显示所有当前活动的变量。
以下选项有效:
-
{名称|id|startID
-
endID} [{名称|id|startID-
endID}...] -
显示按名称、ID或ID范围标识的变量的信息。对于ID范围,提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。使用
/list
命令查看代码片段的ID。 -
-all
- 显示所有变量的信息,包括JShell启动时添加的变量,以及失败、被覆盖或被删除的变量。
-
-start
- 显示在JShell启动时添加的启动变量的信息。
-
{名称|id|startID
-
/?
-
与
/help
命令相同。 -
/!
- 重新运行上一个代码片段。
-
/
{名称|标识|起始标识-
结束标识} [{名称|标识|起始标识-
结束标识}...] -
重新运行由ID、ID范围或名称标识的代码片段。对于ID范围,请提供起始ID和结束ID,用连字符分隔。要提供一个列表,请用空格分隔列表中的项目。列表中的第一项必须是ID或ID范围。使用
/list
命令查看代码片段的ID。 -
/-
n -
重新运行前第-n个代码片段。例如,如果输入了15个代码片段,则
/-4
运行第11个代码片段。命令不计入计数。
输入快捷方式
在JShell中,可以使用以下快捷方式输入命令和代码片段。
Tab键补全
- <tab>
-
在输入代码片段、命令、子命令、命令参数或命令选项时,使用Tab键可自动完成输入的内容。如果无法确定输入内容,则会提供可能的选项。
在输入方法调用时,在方法调用的左括号后使用Tab键可查看方法的参数。如果方法有多个签名,则会显示所有签名。按第二次Tab键会显示方法的描述和第一个签名的参数。继续按Tab键可查看其他签名的描述。
- Shift+<Tab> V
- 在输入完整表达式后,使用此键序列将表达式转换为根据表达式类型确定的变量声明。
- Shift+<Tab> M
- 在输入完整表达式或语句后,使用此键序列将表达式或语句转换为方法声明。如果输入的是表达式,则返回类型基于表达式的类型。
- Shift+<Tab> 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键功能。
键或键组合 | 操作 |
---|---|
Return | 输入当前行。 |
左箭头 | 将光标向左移动一个字符。 |
右箭头 | 将光标向右移动一个字符。 |
Ctrl+A | 将光标移动到行的开头。 |
Ctrl+E | 将光标移动到行的末尾。 |
Meta+B | 将光标向左移动一个单词。 |
Meta+F | 将光标向右移动一个单词。 |
Delete | 删除光标下的字符。 |
Backspace | 删除光标前的字符。 |
Ctrl+K | 删除从光标到行尾的文本。 |
Meta+D | 删除从光标到单词末尾的文本。 |
Ctrl+W | 删除从光标到前一个空格的文本。 |
Ctrl+Y | 将最近删除的文本粘贴到行中。 |
Meta+Y | 在Ctrl+Y后按下,可循环浏览先前删除的文本。 |
启动和结束JShell会话的示例
JShell随JDK提供。要启动会话,请在命令行中输入jshell
。将打印欢迎消息,并提供输入命令和代码片段的提示。
% jshell
| 欢迎使用 JShell -- 版本 9
| 要了解简介,请输入:/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.*;
jshell>
要结束会话,请使用/exit
命令。
jshell> /exit
| 再见
%
输入代码片段的示例
代码片段可以是Java语句、变量定义、方法定义、类定义、导入语句和表达式。如果缺少终止分号,则在完成代码片段时会自动添加分号。
以下示例显示了定义两个变量和一个方法,并运行该方法。请注意,由于未提供变量,因此会自动创建一个临时变量来保存结果。
jshell> int a=4
a ==> 4
jshell> int b=8
b ==> 8
jshell> int square(int i1) {
...> return i1 * i1;
...> }
| 创建方法 square(int)
jshell> square(b)
$5 ==> 64
更改代码片段的示例
通过重新输入变量、方法或类的定义来更改其定义。
以下示例显示了定义方法并运行该方法:
jshell> String grade(int testScore) {
...> if (testScore >= 90) {
...> return "Pass";
...> }
...> return "Fail";
...> }
| 创建方法 grade(int)
jshell> grade(88)
$3 ==> "Fail"
要将方法grade
更改为允许更多学生通过,重新输入方法定义并将通过分数更改为80
。使用上箭头键检索先前的输入,以避免重新输入并在if
语句中进行更改。以下示例显示了新定义并重新运行方法以显示新结果:
jshell> String grade(int testScore) {
...> if (testScore >= 80) {
...> return "Pass";
...> }
...> return "Fail";
...> }
| 修改方法 grade(int)
jshell> grade(88)
$5 ==> "Pass"
对于超过几行的代码片段,或者要进行多次更改的情况,请使用/edit
命令在编辑器中打开代码片段。更改完成后,关闭编辑窗口以返回控制到JShell会话。以下示例显示了命令和编辑窗口关闭时提供的反馈。使用/list
命令显示将通过分数更改为85
。
jshell> /edit grade
| 修改方法 grade(int)
jshell> /list grade
6 : String grade(int testScore) {
if (testScore >= 85) {
return "Pass";
}
return "Fail";
}
创建自定义反馈模式的示例
反馈模式确定显示的提示、输入代码片段时提供的反馈消息以及显示值的最大长度。提供了预定义的反馈模式。还提供了创建自定义反馈模式的命令。
使用/set mode
命令创建新的反馈模式。在以下示例中,新模式mymode
基于预定义反馈模式normal
,并显示命令反馈:
jshell> /set mode mymode normal -command
| 创建新的反馈模式: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
中,当创建方法时显示字符串created
。以下示例显示如何将该字符串更改为defined
:
jshell> /set format mymode action "defined" added-primary
使用/set feedback
命令开始使用刚刚创建的反馈模式。以下示例显示正在使用自定义模式:
jshell> /set feedback mymode
| 反馈模式: mymode
prompt$ int square (int num1){
continue$ return num1*num1;
continue$ }
| 定义的方法 square(int)
prompt$