JShell 基础

JShell

Java9 引入了JShell, JShell是一种交互式的Java REPL(Read-Evaluate-Print-Loop)环境。JShell的引入让Java也能被即写即用,给人一种解释执行的感觉。

启动
jshell
从jshell里退出
jshell> /exit
代码片段

jshell里面输入的表达式,变量,类声明等语句统称为片段。

jshell> int x = 100 //;是可选的
x ==> 100

jshell> int x = 100;
x ==> 100

jshell> void hello(){
   ...>     print("你好!");
   ...> }
   
jshell> hello()
你好!
表达式自动声明变量

如果输入的表达式没有引入变量,一个自动命名的变量被创建,可通过这个变量应用表达式的结果

jshell> 1 + 1
$1 ==> 2

jshell> $1
$1 ==> 2

jshell> int getOne(){
   ...>     return 1;
   ...> }

jshell> getOne()
$4 ==> 1
定义覆盖

先前的定义(包括变量,方法,类)会被后面输入的同名定义覆盖。

jshell> int x = 1
x ==> 1

jshell> String x = "str"
x ==> "str"

jshell> String getOne(){
   ...>     return "一";
   ...> }
   
jshell> getOne()
$9 ==> "一"
允许提前引用

jshell允许提前引用尚未定义的名称,只要在实际执行该段片段时,被应用的名称可用即可。

jshell> void showHello(){
   ...>     print(hello);
   ...> }
   
jshell> showHello() //此时无法正常调用

jshell> var hello = "你好"
hello ==> "你好"

jshell> showHello() //正常调用
你好
jshell允许输入的内容

jshell里面可以输入代码片段和命令,代码片段用于表达逻辑,命令用于控制jshell,调用jshell提供的功能。
任何传统开发中合法的Java代码片段均可在jshell里正确执行,所以Java11开始

var x = 1;

也可以在对应版本的jshell里面使用。
命令以/开头,一个常用的命令/list用于以格式ID : 代码片段 展示以前输入的代码片段,ID可以用于在其他命令或输出中标识该代码片段。

jshell> /list

   1 : 1 + 1
   2 : $1
   4 : getOne()
   6 : String x = "str";
   7 : x
   8 : String getOne(){
           return "一";
       }
   9 : getOne()
  10 : void showHello(){
           print(hello);
       }
  11 : showHello()
  12 : var hello = "你好";
  13 : showHello()
异常处理

jshell不会像传统程序一样因为用户的代码抛出异常而退出,而是直接给以反馈。

jshell> throw new Exception()
|  异常错误 java.lang.Exception
|        at (#16:1)

#ID:行号的格式标识出异常出现的位置。

发布了106 篇原创文章 · 获赞 15 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/skyupward/article/details/103341236