开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情
JShell横空出世
众所周知,python在近年来越来越受欢迎。在IEEE发布的2017年编程语言排行榜中,Python高居首位,而它的特点就是运行简单,可以直接在交互界面直接执行代码。因此Java看重了这一点,在Java9的时候也新增了交互式界面,让执行Java代码不再需要编译后再执行,让代码执行速度更快了,JShell也为此而生。因为Java17是又一个里程碑,所以我这里就直接下载的Java17了。
下载引入Java17
- 官网下载17地址:www.oracle.com/java/techno…
- 配置环境 将javapath移到java8和java17的下面,因为javapath里面都是java8需要的,可能会让java17失效。
注意:在外面指定的JAVA_HOME优先级可能会没有javapath高,有时候有用有时候又没用。所以,按照上面的写法,JAVA_HOME就可以删除了。下次需要java8的时候就把java17的jdk移到java8后面
java -version查看当前版本
JShell
介绍
JShell是java9引入的类似于python的交互式 REPL(Read-Eval-Print Loop,读取-求值-输出 循环)工具。可以用来执行点简单的代码,能够马上看到结果。不需要建项目、编译、执行的复杂操作。
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
| 重新评估以前输入片段的方法的说明
变量的使用
首先我们查看JShell中已有的包:
可以看到其中有util包,可以使用List、Set、Map等数据结构,不过我们也可以通过以下命令导入其它所需的包
jshell> import java.util.*;
声名变量和常规方法一样
byte a = 127;short b = 32767;int c = 3;long d = 4l;float e = 3.14f;double f = 0.1d;boolean g = false;
char h = 'c';String i = "hello";
int[] j = new int[2];String[] k = {"hello","BLACK"};j[0];k[0];
List<Integer> l = new ArrayList<>();l.add(1);l.add(2);l.get(0);
Map<Integer,String> m = new HashMap<>();m.put(1,"Hello");m.put(2,"BLACK");m.get(1);
/vars查看已定义的变量
函数方法的使用
在我们Java中方法当然是必不可少的,比如我们创建一个求累加和的方法。
接下来,我们使用这个方法
当我们记不住创建了哪些方法后可以使用/methos查看已创建方法
使用/list methodName 查看方法的具体信息
Tab代码提示
JShell也像其它脚本语言一样提供了Tab键的代码提示,比如我们输入一个a按下Tab就能出现刚刚我们定义的方法
输入一个S按Tab就能出现以S开头的类
输入S按Tab,再输入o按Tab,在输入p按Tab,就是我们常用的打印System.out.print()
编辑
jshell提供有想记事本一样的编辑操作,/edit methodName打开编辑器编辑方法
点击Cancel取消修改,点击Accept后要点击Exit保存退出
保存
当我们脚本代码写完后如果需要保存下次使用的话,可以使用/save命令进行保存
/save [-all|-history|-start] <文件>
没有保存代表保存成功,在桌面上就看到jshell.txt了
保存后下次使用open 文件位置引入
总结
jshell可以运行点简单的Java代码,当你想验算某个算法,或者试下某个数据结构,解决点简单的问题,打开idea新建一个项目比较浪费时间,直接cmd开始JShell确实方便了很多。这里还有一些不常用命令没有进行举例,大家用到的时候可以再去尝试下。