JShell – Java交互工具(REPL) – 笔记

在今年九月正式发布的 Java9 版本中,其 /bin 目录中多个一个交互工具 JShell(据说 Java8 已有测试版)。众所周知,许多编程语言都提供称作 Read-Evaluate-Print Loop (REPL)的命令行工具,它们能够在输入声明、语句及表达式时计算,并立即给出结果。

以 Python 为例,运行整个工程、项目可能需要很长时间,但是你可以使用此工具执行一些需要确定的表达式,就能立即得到他们返回的值。这对于哪些开始学习语言或者接触语言新功能的程序员来说是个便捷好用的工具。

然而没 JShell 之前的 Java 来说,你需要编写一个测试类新建 main 方法来打印结果,并且每次修改后需要重写编译、运行。

运行

下载并安装 Java9 ,配置环境变量,或者不配置的话直接在 /bin 目录下就能找到 jshell 可执行文件。建议一开始运行加入 -v 参数,JShell 给出详细反馈。

此时若不需要详情模式,可输入 /set feedback normal

默认导入

JShell 默认有一组常用的导入

你也可以任何时候导入自己想要的通过 import XXX (单击 tab 补全、给出可选)

表达式

你可以输入任何有效的 Java 表达式,它将得出返回值、类型,并分配给一个变量,如:

变量

可以声明变量(默认值),并赋值。一旦声明后,变量即为当前对话中全局变量,再次声明、赋值将覆盖

方法

也可以定义方法,再次定义将覆盖

不过尝试了下,发现 JShell 定义方法只支持参数重载,不支持返回值重载,后定义将覆盖前面定义的

命令

除了 Java 代码外,你还可以执行一些 JShell 命令。一些常用的如下(键入 help 将列举所有)

列出变量

编辑

可以后跟方法名(将编辑所有重载方法)、变量名、id。id 就是上面通过 /list 列出的序号。

使用示例

验证返回值

装箱细节

值在-128-127的自动装箱 Integer 对象在JVM中已经缓存好

总结

JShell 这一REPL交互工具,将给测试 Java 代码片段带来很大的方便。Java 程序员将像 Python、NodeJS、Scala程序员那样享受这种命令行带来的便捷,看到这里还不行动起来?下载个试试,将让你回想起自己写 main 测试就想流泪 XD

资料

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*