JShell 详解

JShell 详解文章目录一 简介二 为什么使用 JShell 三 参考示例启动 JShell 退出 JShell 声明定义基本类型的变量声明定义一个方法覆盖已存在的变量 方法 类的定义查看 JShell 默认导入的包自动补全功能列出所有键入的源列出已声明方法及其签名加载外部的源代码查看 JShell 提供的所有指令将你输入的历史代码片段保存到文件中一 简介 JShell JavaShell 工具是 JDK1 9 出现的工具 JShell 是一个用于学习 Java 编程语言和 Java 代码原型的交互式工具 JShell 是

一、简介

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

(0)
上一篇 2026年3月20日 上午9:48
下一篇 2026年3月20日 上午9:48


相关推荐

  • ipynb转markdown

    ipynb转markdown不知道为什么 ipynb 里面没法显示图片 为了阅读体验 没办法只能转为 markdown 了 jupyternbcon 特征处理 ipynb

    2026年3月26日
    2
  • js字符串方法

    js字符串方法1 split 切割字符串 2 charAt 获取字符串中的某一个字符 3 substring 截取字符串用法 substring start end 不包括 end 截取从 star 开始 到 end 之间的字符串 如果只传一个值 表示从这个位置开始 一致截取到字符串末端 4 substr index n 从 index 索引位置开始截取 截取 n 个字符 如果只传一个值 表示从这个位置开始 一致截取到字符串末端 5 join 拼接字符串 6 toUpperCase 字符

    2026年3月18日
    2
  • Unity3d的Log系统重构

    Unity3d的Log系统重构

    2022年3月13日
    61
  • megacli通过盘符定位物理盘_MegaCli使用

    megacli通过盘符定位物理盘_MegaCli使用0 前沿介绍 1 lsscsi s 查看盘符对应关系 2 查看物理槽位占用情况 3 查看适配器 控制器 个数 4 查看控制器序号 名称 序列号 5 查看所有逻辑层次磁盘详细信息 6 查看所有物理层次磁盘详细信息 7 查看 raid 信息 对应到 targetid 即逻辑磁盘 8 查看是 raid 还是 JBOD9 查看物理磁盘和逻辑磁盘对应关系 10 附录 查询物理和逻辑所有磁盘信息 0 前沿介绍 PD 物理的磁盘

    2026年3月19日
    3
  • javah的使用[通俗易懂]

    javah的使用[通俗易懂]原文链接:http://blog.csdn.net/zgyulongfei/article/details/74371761.无包名的类例如D:\MyTest目录下有一个Test.class文件。那么要生成.h文件,则在控制台下切换到D:\MyTest目录下,然后输入javah-jni Test之后即可在D:\MyTest下找到Test.h头文件

    2026年3月9日
    4
  • pycharm自动调整代码快捷键说明

    pycharm自动调整代码快捷键说明自动调整代码说明 Ctrl 注释 取消注释 选择的行 Ctrl F 高级查找 Tabshift tab 缩进 取消缩进所选择的行 Ctrl Alt I 自动缩进行 Ctrl Delete 删除到字符结尾 Ctrl Backspace 删除到字符的开始 shift enter 开始新行 Ctrl Enter 补全 Alt Enter 自动添加包 shift O 自动建议代码补全 Ctrl tSVN 更新 Ctrl kSVN 提交 C

    2026年3月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号