在一波新技术快速刷新的过程中,Java一直被嘲讽没有Shell, 在Java JDK 9版本后终于出现了JShell,基于Java的高度格式化要求,代码规范的程度相对于其他类型的语言来说有点恐怖的情况下,很好奇这个Shell的使用简便性到底能达到多少。所以特此记录一下JShell 的初步使用。
先看一下官方说明(官方文档位置)
Why Use JShell?
Using JShell, you can enter program elements one at a time, immediately see the result, and make adjustments as needed.
Java program development typically involves the following process:
Write a complete program.
Compile it and fix any errors.
Run the program.
Figure out what is wrong with it.
Edit it.
Repeat the process.
JShell helps you try out code and easily explore options as you develop your program. You can test individual statements, try out different variations of a method, and experiment with unfamiliar APIs within the JShell session. JShell doesn’t replace an IDE. As you develop your program, paste code into JShell to try it out, and then paste working code from JShell into your program editor or IDE.
你可以完全的把他当成一个类来使用,或者方法体,完全的随心所欲
String firstStr = "Hello JShell";
System.out.println(firstStr);
firstStr
但是这种方式没有任何意义,并不是使用该变量,而是单纯的输出这个变量的信息(进入SHell 的时候未指定反馈模式 所以 现在看来除了值信息外 没有其他信息,此过程后面会说)。
int strLength = firstStr.length();
说到这里,大家就应该明白了如何调用方法,就不再赘述了
firstStr.length();
自动创建变量 $4来保存结果。
其实很简单 , publi.........如下图
输入的时候 支持Tab 补全
正常的调用就可以了。
说白了就是不写类框了
可以使用 shift + tab i 来实现类库引入
比如引入Frame:
new Frame然后ctrl + tab 松开后按下i 即可选择引入还是其他
什么意思呢,就是说 现在有一个方法求圆的面积,但是由于某些原因 我没有定义PI的值,而是先写的方法
如下图,他会提示你有一个变量没有定义,所以这个方法目前无法调用,直到你声明了这个变量才可以使用这个方法
声明变量PI:
然后再调用方法就可以正常使用了
$6为Shell创建的自动变量
shell状态下 输入/edit 即可
每当你再编辑器中写一行文字,就会自动更新一次shell,自己实验一下就好了
两种方式 进入shell的时候加上参数:
JShell -v
或者在Shell模式下输入:(tab 可以补全)
/set feedback verbose
verbose 是详细模式
Setting the Feedback Mode
A feedback mode defines the prompts and feedback that are used in your interaction with JShell. Predefined modes are provided for your convenience. You can create custom modes as needed.
The predefined modes can’t be modified, but they can be used as the base of a custom mode. The predefined modes, in descending order of verbosity are
verbose
,normal
,concise
, andsilent
.The following table shows the differences in the predefined modes.
Mode Value Snippets Declaration Updates Commands Prompt verbose
name ==> value (and description)
Yes
Yes
Yes
\njshell>
normal
name ==> value
Yes
No
Yes
\njshell>
concise
name ==> value (only expressions)
No
No
No
jshell>
silent
No
No
No
No
->
当指令可以被缩写单一识别的时候 可以使用缩减来优化指令长度:
完全等于上面的指令 /se(t) fe(edback) v(erbose)
具体指令集使用/help查看就可以
A JShell script is a sequence of snippets and JShell commands in a file, one snippet or command per line.
Scripts can be a local file, or one of the following predefined scripts:
Script Name Script Contents DEFAULT
Includes commonly needed import declarations. This script is used if no other startup script is provided.
PRINTING
Defines JShell methods that redirect to the print, println, and printf methods in PrintStream.
JAVASE
Imports the core Java SE API defined by the
java.se
module, which causes a noticeable delay in starting JShell due to the number of packages.
这部分大家自己查看吧 没有什么特别的说明。
官方Script说明
鄙人喜欢Java, 如果你也想一起交流欢迎入群:653460549