Jshell工具--JDK9新特性

Jshell工具

JShell是JDK9的新特性之一,以 Kulla 实现的 Java Enhancement Proposal (JEP) 222 规范的一部分。很多编程语言如 JavaScript、Python、Ruby 等,提供了非常易用的命令行执行工具,但 Java 一直缺失此功能。因此 JDK 9 引入了 Java shell 工具 —— JShell。

传统方式创建Java程序需要的步骤:

打开编辑器并编写程序、 保存程序 、编译程序 、运行程序

前面的步骤是在我们的程序没有任何错误的情况下,如果程序出现错误,我们就需要一直重复上面的步骤,这是一件非常麻烦的事情

在这里我们的Jshell的优势就体现出来了,Jshell可以执行 Java脚本代码,并且立即返回结果

1.启动Jshell

要启动Jshell,电脑必须配备JDK9的环境,没有的请自行百度搜索教程。

环境配备好之后,直接

启动cmd

在这里插入图片描述cmd打开之后,输入Jshell的启动命令即可使用:

JShell

在这里插入图片描述

2.程序演示Jshell

简单编写一个x+y的程序并输出一下结果:

在这里插入图片描述
从上面的案例,我们可以看到,JShell可以立即执行java脚本代码,但它并不局限于只执行一条命令,起码从上面的图片来看,图中程序的变量是一直有效的,那么上图中的这些变量什么情况下才会失效呢?

这就牵扯到另外一个命令,JShell的退出命令

/exit

在这里插入图片描述
上面的小示例仅仅表现了Jshell的保存变量的功能,下面就分类介绍Jshell的其他功能

3.变量、方法的改写

在传统的程序中,一个变量只可以赋一种类型的值,如果转变类型复制的话,程序会报错,Jshell跨类型赋值后则会直接覆盖掉原来的值

在这里插入图片描述
JShell方法的改写:

//创建方法
jshell> String weather(String s){
   ...>     return s;
   ...> }
|  已创建 方法 weather(String)
//改写方法

jshell> String weather(String s) {
   ...>   return "it is really " + s;
   ...> }
|  已修改 方法 weather(String)
|    更新已覆盖 方法 weather(String)

jshell> weather("wonderful")
$8 ==> "it is really wonderful"
|  已创建暂存变量 $8 : String

4.Jshell关于导包

一般写程序的时候,整个程序的运行导入一些有用的包,前面写的程序并没有导入任何的包,为什么还能照常运行?这就归功于Jshell的新特性–默认导包

Jshell会默认导入10个常用包


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.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
|       重新评估以前输入片段的方法的说明
发布了4 篇原创文章 · 获赞 0 · 访问量 23

猜你喜欢

转载自blog.csdn.net/qq_42768841/article/details/105463619
今日推荐