这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战
几年前因为工作的原因,曾经做过一小段时间的 Java 编程培训讲师,教授入门新手的第一课,最重要的就是快速完成一个作品,带来成就感和学习的自信,这个作品通常是 Hello World。无论是我作为新手学习 Java 编程的时候,还是作为讲师教学生的时候,都会对 Java 语言有一个疑问:为什么为了简单地输出一行文本,我需要做这么多事?
配置开发环境、编写好几行不知道是什么作用的代码、编译代码、运行程序。对于很多新手,这一套操作还没有完成就产生挫败感了。
后来我才知道,Java 9 之后的版本都有一个叫做 jshell 的工具,jshell 的意思就是 Java Shell。它提供了一个交互式的编程环境,可以用来做一些简单的演示,或者验证一些简单的想法。
如果你已经配置了 Java 的开发环境,可以直接在命令行输入 jshell 进入:
进入之后,命令行窗口会被 jshell 接管。刚进入的时候,会有两行提示信息,一个是当前的 jshell 版本号,第二个是操作提示。
我们按照提示输入 /help intro,结果如下:
直接输入 /help 还可以得到 jshell 中可以使用的命令列表,这些命令都是以 / 开头的,比如:/exit 可以退出 jshell。
使用 jshell 也很简单,比如,要输出一个 Hello world 字符串,不需要写一个类和入口方法,直接写输出指令就可以了,如下:
jshell> System.out.println("Hello, World!");
Hello, World!
如果你的代码出现了语法错误,也会有友好的错误提示:
jshell> System.out.println("Hello, World!"");
| 错误:
| 未结束的字符串文字
| System.out.println("Hello, World!"");
| ^
jshell 中不仅可以写这样单行的指令,也可以声明变量并使用变量进行其他操作:
jshell> int x = 2;
x ==> 2
jshell> x * x
$4 ==> 4
以上的代码中,第一个指令声明了一个 int 类型的变量 x,它的值是 2,第二个指令则计算了 x 的平方,得到的值是 4。从以上可以看出,没执行一个指令,jshell 都会反馈执行的结果,这对编程初学者非常友好。
除此之外,jshell 中也支持多行代码的指令比如循环和判断:
jshell> for (int i = 0; i < 5; i++) {
...> System.out.println(i);
...> }
0
1
2
3
4
这篇文章只是抛砖引玉,直接少了一些最简单的用法。因为我认为 jshell 最好的使用场景就是快速验证和演示,对于更高级的用法,比如加载外部的类,个人认为几乎不会使用 jshell 来做。