前言
JShell是JDK 9发行版[JEP 222]附带的新命令行交互式REPL (Read-Evaluate-Print-Loop)控制台,用于计算用Java编写的声明、语句和表达式。JShell允许我们执行Java代码片段并立即获得结果,而不必创建解决方案或项目。
在本文中,我们将通过示例学习在JShell中可以完成的各种任务。
正文
运行JShell
首先要做的是将JDK 9安装到您的计算机中。从这个链接下载JDK 9并安装它。
进入安装位置,查看/jdk-9/bin文件夹。我们将在这里找到jshell.exe文件。
现在启动一个新的命令窗口并检查java版本。
1 | >> java -version |
它应该指向JDK 9版本。如果不是,则使用相应的值更新环境属性JAVA_HOME
和PATH
。
1 | JAVA_HOME=C:\Program Files\Java\jdk-9 |
现在再次启动新的命令提示窗口并输入命令jshell。它将把游标更改为jshell。如下:
接下来我们来看下如何在JShell REPL中运行了Java相关代码。
在REPL里编写和运行一段Java代码
Jshell允许创建小的代码片段并对它们进行测试,而不需要创建和构建复杂的项目。这就是它的用法。
在JShell上运行代码片段非常容易,我们来看一下。
变量
我们可以像在实际编程中那样定义变量。唯一不同的是,我们不必一开始就编写一个类或方法。
1 | jshell> int i = 10; |
要输出变量的值,只需输入变量名并回车。它将输出变量的值。
1 | jshell> i |
要将变量重新赋值给新值,只需按常规方式执行即可。
1 | jshell> i=20; |
要列出所有定义的变量,使用 /vars
命令。
1 | jshell> /vars |
方法
和变量一样,方法也很简单。
要在JShell中创建方法,需要定义retrun类型、方法名称、参数和方法体定义方法。不需要访问修饰符。
1 | jshell> int sum (int a, int b) { |
列出所有定义的方法,使用/methods
命令。
1 | jshell> /methods |
要使用方法,像普通编程那样调用即可。
1 | jshell> sum(2,2) |
如果我们想查看方法源码,使用/list
命令即可,它将展示指定方法的源码。
1 | jshell> /list sum |
如果想更改方法代码,需要用相同的方法名重写新修改的代码。
1 | jshell> int sum (int a, int b) { |
请牢记方法重载规则。如果更改了方法参数数量或它们的数据类型,那么它将是一个新方法,并且将有两个方法在JShell中注册。
在JShell编辑器上编写代码
当只有几行代码时,JShell内联编辑器已经足够好了。但是当代码量开始变大时,我们可能需要一个文件编辑器来修改代码。
这里我们可以使用JShell编辑器。要启动编辑器,使用 /edit
命令 + 要编辑的方法名。
在这里,根据需要更改方法代码并单击Accept按钮。修改后的代码将在Jshell中更新,我们将在提示中收到确认消息。我们可以随时更改代码,保存它,然后退出窗口。
在外部编辑器中编辑代码
自带的编辑器可以满足大多数需要,但如果你喜欢在任何特定的编辑器上编码,你也可以使用它。
JShell允许轻松地配置任何外部编辑器来编辑代码片段。只需要获得我们想要使用的编辑器的完整路径,并在JShell中运行/set editor
命令来配置编辑器。
1 | /set editor "C:\\Program Files\\Sublime Text 3\\sublime_text.exe" |
再次执行/edit
命令。它将在sublime编辑器中打开代码。
自由编辑代码,并保存。
将外部Java文件加载到REPL
很多时候,我们可能已经在任何java文件中编写了一些代码,希望将其执行到JShell中。
要在JShell中加载文件,使用/open
命令。
假设我在c://temp
文件夹中有一个Demo.java
文件。它的内容是:
1 | int i1 = 10; |
现在让我们把它加载到JShell。
1 | /open c:\\temp\\demo.java |
可以看到代码被加载到了JShell。
结语
以上就是在使用Java 9中JShell我们需要了解的内容。