Java 9 JShell教程

时间:2020-02-23 14:35:02  来源:igfitidea点击:

java JShell是在Java 9版本中引入的命令行工具。
它有助于在单行中执行/测试Java语句。
它是基于的 REPL(读取评估打印循环)读取代码语句,执行该代码并打印输出,语句。
它读取了该语句,并立即显示下一行的结果。

如果你熟悉 Scala或者 Python语言,然后你会了解repl工具。

它是一个强大的工具,允许执行语句、表达式、类、循环、方法等。

我们可以使用它来测试我们的代码或者逻辑,而不将代码写入文件,然后编译它。
它减少了刚检查代码逻辑的努力。

例如,如果我们想打印一个简单的Hello World消息,首先我们需要将代码保存到文件中,然后编译并执行它。

虽然使用jshell,我们写了一个语句并立即获得结果。

将数据保存到文件中需要其他步骤,如编译和执行代码,而JShell在单个步骤中快速执行。

更有理解,让我们举个例子。

public class Test 
{  
    public static void main(String[] args) 
    {  
        System.out.println("Hello World");
    }  
}

输出

Hello World

使用jshell编写hello world

现在,我们可以很容易地理解JShell比将代码写入文件中具有更多优势。
但它仅帮助执行即时代码。
要创建应用程序,我们必须将源代码保存到文件中。

我们可以用jshell做什么?

我们可以执行包括语句,循环,表达式,类,方法等的代码。

它还提供了多个内置命令来控制JShell环境。
例如,要检查创建的变量,我们可以使用

/vars命令。
我们将在本文后面讨论这些命令。

如何启动和停止jshell?

要以JShell开头,请在Linux和Mac OS的Windows和Terminal的情况下打开命令提示符,然后键入 jshell命令。

>jshell

它将在与Java版本的欢迎消息中打开JShell。
如果是Windows,请参阅下面的屏幕截图。

要停止jshell,只需键入/退出命令将带出正常命令提示符。

jshell> /exit
|  Goodbye

在jshell中创建变量

启动JShell后,让我们创建一些变量并打印它们的值。

jshell> int a = 10;
a ==> 10
jshell> int b = 20;
b ==> 20
jshell> int multiply = a*b;
multiply ==> 200
jshell> System.out.println(multiply);
200
jshell>

如果我们没有提供任何变量并输入任何值,那么 jshell将保持动态变量中的值。
请参阅此处的示例。
Java自动创建这些变量。

jshell> 30
 ==> 30
jshell> 50
 ==> 50

JShell作为计算器

我们可以使用JShell作为计算器来获得数字计算的即时结果。
查看示例:

jshell> 10+20
 ==> 30
jshell> 10*10
 ==> 100
jshell> 200/10
 ==> 20
jshell> 20+30+50+40
4 ==> 140

在jshell中创建方法

与变量一样,我们可以创建执行业务逻辑的方法。

jshell> int multiply(int a, int b){
...> return (a*b);
...> }
|  created method multiply(int,int)
jshell> int result = multiply(10,20);
result ==> 200

在jshell创建类

像方法一样,我们也可以通过键入类定义创建类。

这是创建一个名叫类的一个简单示例 Country

jshell> class Country {
   ...>     String name;
   ...>     Country(String name)
   ...>     {
   ...>         this.name=name;
   ...>     }
   ...>
   ...>     public String getCountryName()
   ...>     {
   ...>         return name;
   ...>     }
   ...> }
   created class Country

我们可以声明以下对象:

jshell> Country c1= new Country(“Netherlands");
c1 ==> Country@754ba872
jshell> c1.getCountryName();
 ==> “Netherlands"

正如我们所看到的,我们创建了一个名为的国家对象 c1并调用 getCountryName()关于它的方法。

在JShell中执行代数表达式

我们可以使用jshell执行任何有效表达式来检查表达式的结果。

jshell> a = 10
a ==> 10
jshell> b = 20
b ==> 20
jshell> (a*a)+(b*b)+2*a*b;    //algebraic expression
 ==> 900

在JShell中执行条件语句

我们可以测试诸如IF的条件语句,以便在JShell中立即检查程序控制流程。

jshell> int a = 20;
a ==> 20
jshell> int b = 50;
b ==> 50
jshell> if(a<b){                                                                
...> System.out.println(“A is less than B");
...> }else{
...> System.out.println(“B is less than A");
...> }
A is less than B
jshell>

jshell命令

除了执行Java代码外,JShell提供了一些内置命令来处理代码。
他们中的一些我们在这里讨论。

列出变量

要检查我们当前会话的所有创建变量,我们可以使用/vars命令。
它将填充所有变量。

jshell> /vars
|    int sum = 30
|    int  = 30
|    int  = 50
|    int  = 30
|    int  = 100
|    int  = 20
|    int  = 140
|    int result = 30
|    int  = 900
|    int a = 20
|    int b = 50

列出方法

要获取当前会话中所有创建的方法的列表,请使用/方法命令。

jshell> /methods
|    int multipy(int,int) jshell>

导入Java软件包

在启动JShell期间,它默认导入某些软件包以向用户提供基本函数。
我们可以使用/导入命令查看这些默认包。

jshell> /import
|    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.*
jshell>

检查命令历史记录

要检查命令的历史,我们已经执行了到目前为止,我们可以使用 /history命令。

jshell> /import
int a=10;
int b=20;
int multiply=a*b;
System.out.println(multiply);
int multiply(int a,int b){
return (a*b);
}
jshell>

编辑jshell编辑垫中的代码

如果我们只需要编写几行代码,我们可以使用内联编辑器。
但是当你想编写相当短的代码时,那么你可以 /edit命令要更改代码。
例如:假设我们要编辑方法 multiply(), 我们可以使用 /edit multiply命令。

jshell> /edit multiply

我们将看到下面的JShell编辑垫,我们可以其中进行更改。

完成更改后,我们可以单击 Accept按钮接受更改。

将外部Java代码加载到JShell

我们还可以使用外部文件的加载代码 /open命令。
让我们在举例的帮助下看:这里是文件c://divide.java的内容

int x=10;
int y=2;
 
int divide(int a,int b)
{
    return a/b;
}

现在我们可以使用以下命令加载文件。

jshell> /open C://divide.java

正如我们可以看到变量 xy和方法 divide加载到JShell中。

删除变量,方法,jshell类

我们可以使用JShell删除变量,方法,类 /drop命令。

让我们说你想要删除方法 divide来自jshell。
我们可以使用以下命令

现在我们可以使用以下命令加载文件。

jshell> /drop divide
|   dropped method divide(int,int)

正如我们所看到的,方法 divide()加载到jshell中。

jshell帮助

我们可以用 /help命令以获取有关命令的更多信息。