java9 jshell示例

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

本教程介绍如何在Java9中使用JShell工具

JShell工具,也称为REPL(Read Evaluate Print Loop),允许我们执行Java代码,立即获得结果。我们可以快速计算表达式或者简短算法,而无需创建、编译或者构建新项目。在JShell的帮助下,我们可以执行表达式、使用导入、定义类、方法和变量以及使用导入。请注意,JRE不是JRE的一部分。

启动JShell

打开控制台或者终端(取决于操作系统)。浏览到Java9JDK安装文件夹,然后

cd

进入/bin文件夹。运行jshell可执行文件-jshell.exe文件如果我们运行的是Windows操作系统

简单的算术运算

使用JShell,我们可以通过将它们作为数学表达式输入来轻松测试算术运算。下面的例子演示了这个概念。不需要在行尾加分号(;)

注意输出37/2=18. 之所以会出现这种情况,是因为JShell将37视为整数,因此结果被强制转换为(int)。在37上加一个小数点将产生一个双精度结果

JShell内部变量

JShell通过打印输入的结果给我们立即的反馈。例如:

jshell> 1 + 3
 ==> 4

表达式1+3得到4. JShell还将这个值赋给一个内部变量 $1。进一步的命令被分配给增量的$变量,如$2、$3等。

下面的屏幕截图演示了JShell内部变量的用法:

jshell内部变量

通过键入内部变量的名称,可以打印内部变量的值:

jshell> 
 ==> 4

我们可以为内部变量指定一个新值:

jshell>  = 20
 ==> 20

表达式1+3生成一个整数,对吗?那么,如果你试图给不同类型的内部变量赋值,会发生什么呢?让我们尝试为$1变量指定一个15.8的双精度值

jshell>  = 15.8

正如我们在上面的屏幕截图中所看到的,这将解析为“不兼容类型错误”。一旦创建了内部变量,就不能再更改类型了。

内部变量不仅用于存储基元类型。它们也可以处理对象。在下面的示例中,我们创建字符串类型的内部变量:

jshell> new String("Hello")
 ==> "Hello"

JShell自动完成

JShell有一个内置的自动完成特性(也称为Tab完成特性),它允许我们通过只按Tab键来最小化键入。开始键入并按Tab键。这将完成我们开始键入的单词(如果只有一个选项可用)或者显示可能选项的列表。看看下面的例子。我们开始键入“Str”并按Tab键:

JShell定制进口

默认情况下,在JShell中导入以下包:

  • java.io.*

  • java.math.*

  • java.net.*

  • java.nio.file.*

  • java.util.*

  • java.util.concurrent.*

  • java.util.function.*

  • java.util.prefs.*

  • java.util.regex.*

  • java.util.stream.*

*提示:*我们可以使用/imports命令列出导入

我们可以轻松地导入包,这些包是javase的一部分。如果我们正在寻找一个包名,请查看官方的java9sejavadoc站点

下面的示例演示如何导入 java.time创建一个新的LocalDate对象

JShell示例程序

测试List reverse方法的典型Java类如下所示:

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class ListUtils {
	public static void main(String[] args) {
		List<String> list = Arrays.asList("A", "B", "C");
		System.out.println(reverse(list));
	}

	public static List<String> reverse(List<String> list) {
		List<String> listCopy = list.subList(0, list.size());
		Collections.reverse(listCopy);
		return listCopy;
	}
}

上面显示的代码有imports、main方法和System.out.println()以显示结果。我们可以跳过JShell中的所有3个。这就是我们如何使用JShell测试相同的功能:

jshell示例

正如我们在上面的示例中所注意到的,我们像往常一样创建类。此外,我们的输入列表是在类之外创建的。查看创建列表后的立即输出,显示其值

list ==> [A, B, C]

现在我们只调用类中的实用方法

jshell> ListUtils.reverse(list)

并显示结果输出:

 ==> [C, B, A]

如何退出JShell

我们可以随时通过键入

jshell> /exit

或者按Ctrl+C