JDK11 | 第二篇 : JShell 工具

文章首发于公众号《程序员果果》java

地址 : https://mp.weixin.qq.com/s/saHBSTo4OjsIIqv_ixigjg程序员

1、简介

Java Shell工具是JDK1.9出现的工具, Java Shell工具(JShell)是一个用于学习Java编程语言和Java代码原型的交互式工具。JShell是一个Read-Evaluate-Print循环(REPL),它在输入时评估声明,语句和表达式,并当即显示结果。该工具从命令行运行。shell

2、为何要使用JShell ?

使用JShell,您能够一次输入一个程序元素,当即查看结果,并根据须要进行调整。
Java程序开发一般涉及如下过程:编程

  • 写一个完整的程序。
  • 编译它并修复任何错误。
  • 运行程序。
  • 弄清楚它有什么问题。
  • 编辑它。
  • 重复这个过程。

JShell可帮助您在开发程序时尝试代码并轻松探索选项。您能够测试单个语句,尝试不一样的方法变体,并在JShell会话中试验不熟悉的API。JShell不替换IDE。在开发程序时,将代码粘贴到JShell中进行试用,而后将JShell中的工做代码粘贴到程序编辑器或IDE中。微信

3、JShell的使用

1. 启动和退出

使用JShell须要配置好java的环境变量。session

启动:oracle

jshell

要以详细模式启动JShell,请使用如下-v选项:app

jshell -v

退出:编程语言

/exit

2. 运行代码片断

使用详细选项启动JShell以得到最大可用反馈量:编辑器

jshell -v
|  欢迎使用 JShell -- 版本 11.0.2
|  要大体了解该版本, 请键入: /help intro

在提示符处输入如下示例语句,并查看显示的输出:

jshell> int x = 45
x ==> 45
|  已建立 变量 x : int

首先,显示结果。将其读做:变量x的值为45.由于您处于详细模式,因此还会显示所发生状况的描述。

注意:若是未输入分号,则会自动将终止分号添加到完整代码段的末尾。

当输入的表达式没有命名变量时,会建立一个临时变量,以便稍后能够引用该值。如下示例显示表达式和方法结果的临时值。该示例还显示了...> 在代码段须要多行输入完成时使用的continuation prompt():

jshell> String twice(String s) {
   ...>   return s + s;
   ...> }
|  已建立 方法 twice(String)

jshell> twice("Oecan")
$4 ==> "OecanOecan"
|  已建立暂存变量 $4 : String

3. 改变定义

在试验代码时,您可能会发现变量,方法或类的定义没有按照您但愿的方式执行。经过输入新的定义能够轻松更改定义,该定义将覆盖先前的定义。
要更改变量,方法或类的定义,只需输入新定义便可。例如,twice在定义该方法尝试片断获得在下面的示例中的新定义:

jshell> String twice(String s) {
   ...>   return "Twice: " + s;
   ...> }
|  已修改 方法 twice(String)
|    更新已覆盖 方法 twice(String)

jshell> twice("thing")
$6 ==> "Twice: thing"
|  已建立暂存变量 $6 : String

还能够改变变量的类型定义。如下示例显示x从String更改int为:

jshell> int x = 45
x ==> 45
|  已建立 变量 x : int

jshell> String x
x ==> null
|  已替换 变量 x : String
|    更新已覆盖 变量 x : int

4. 查看默认导入和使用自动补全功能

默认状况下,JShell提供了一些经常使用包的导入,咱们可使用 import 语句导入必要的包或是从指定的路径的包,来运行咱们的代码片断。咱们能够输入如下命令列出全部导入的包:

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.*

5. 自动补全的功能

当咱们想输入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(

6. 列出到目前为止当前 session 里全部有效的代码片断

jshell> /list 

   2 : 2+2
   4 : twice("Oecan")
   5 : String twice(String s) {
         return "Twice: " + s;
       }
   6 : twice("thing")
   8 : String x;

7. 列出到目前为止当前 session 里全部方法

jshell> /methods 
|    String twice(String)

8. 使用外部代码编辑器来编写 Java 代码

如今,我想对twice方法作一些改动,若是这时有外部代码编辑器的话,作起来会很容易。在 JShell 中能够启用JShell Edit Pad 编辑器,须要输入以下命令,来修改上面的方法:

代码修改完成之后,先点击“Accept”按钮,再点击“Exit”按钮,则退出编辑器,在 JShell 命令行中提示方法已经修改。

9. 从外部加载源代码

若是在外部已经有写好的 Java 文件,可使用/open 命令导入到 JShell 环境中,例如如今有一个Test.java文件:

void say(String name) {
     System.out.println("hello " + name);
}
jshell> /open /Users/Documents/java11/Test.java

jshell> /methods
|    String twice(String)
|    void say(String)

jshell> say("zhangsan")
hello zhangsan

JShell工具的更多使用方法,请参照官方示例:https://docs.oracle.com/javase/9/jshell/

关注我


欢迎扫码或微信搜索公众号《程序员果果》关注我,更多精彩内容不能错过 ~~

(转载本站文章请注明做者和出处 程序员果果的博客

相关文章
相关标签/搜索