Java 9中的JShell有哪些不同的反馈模式?

1. JShell的简介

JShell是Java 9中引入的一种交互式编程工具,旨在简化Java编程过程。它允许Java程序员在命令行终端上轻松地键入Java代码,而不需要在IDE中打开代码文件。JShell不仅可以提供即时反馈,还可以快速评估和修改代码块。JShell还支持命令段,使用户能够在更易于理解的方式下运行代码快照。

2. JShell的反馈模式

2.1 静态反馈

JShell最基本的反馈是静态反馈,它显示在命令行中,告诉开发人员代码是否合法。如果代码有语法错误,JShell会在命令行中显示错误消息。

jshell> int a = 5;

| created variable a : int

jshell> int b = 2

| Error:

| ';' expected

| int b = 2

| ^

在上面的例子中,我们可以看到静态反馈的例子。当我们在第二行中创建变量时缺少了一个分号。JShell会输出一个错误消息来指出错误的位置。

2.2 动态反馈

除了静态反馈,JShell还提供了动态反馈。在通过JShell执行代码后,JShell会在命令行中返回代码的结果。

jshell> int a = 5;

| created variable a : int

jshell> int b = 2;

| created variable b : int

jshell> a + b;

| 程序执行结果 ==> 7

在上面的例子中,我们定义了两个变量a和b,然后使用运算符在JShell中进行了简单的数学运算。JShell通过动态反馈显示了结果。

2.3.交互式复习

JShell 提供了交互式复习的功能,可以让开发人员对过去的代码块进行查看、编辑和重新执行。

jshell> int a = 5;

| created variable a : int

jshell> int b = 2;

| created variable b : int

jshell> a + b;

| 程序执行结果 ==> 7

jshell> /vars

| int a = 5

| int b = 2

jshell> /edithistory 3

a + b -> a + b;

| modified a + b : int -> 7

| 程序执行结果 ==> 7

在上面的例子中,我们可以看到我们使用 /vars 命令列出了我们定义的变量。我们还使用了/edithistory 3命令来编辑上一次执行的结果。

2.4.自动补全

自动补全是JShell的另一个有用的功能,它可以帮助开发人员在编写代码时填写方法名或变量名。如果您正在输入变量或方法名称,可以使用Tab键自动补全名称。

jshell> String str = "Hello World";

| created variable str : String

jshell> str.

charAt( codePointBefore( compareToIgnoreCase( describeConstable(

chars( codePointCount( concat( endsWith(

在上面的例子中,当我们输入"str."之后,按Tab键将会自动补全字符串对象中可以使用的方法。

2.5.预定义变量和方法

JShell还提供了预定义的变量和方法,供开发人员使用。例如,开发人员可以使用"$ 1"表示上一个结果,"$ 2"表示前两个结果,以此类推。同时,JShell还定义了一些有用的方法,例如:List.of(),Set.of()等。

jshell> int a = 5;

| created variable a : int

jshell> int b = 2;

| created variable b : int

jshell> $1 + $2

| 程序执行结果 ==> 7

jshell> List.of("Java", "is", "awesome");

| 程序执行结果 ==> [Java, is, awesome]

在上面的例子中,我们可以看到开发人员使用了预定义变量$1和$2来计算变量a和b之和。此外,还使用了预定义的List.of方法创建一个新的列表对象。

3.总结

JShell是一个强大的交互式编程工具,可以加快Java开发的速度。它提供了许多不同的反馈模式,包括静态反馈、动态反馈、交互式复习、自动补全和预定义变量和方法。通过使用这些功能,开发人员可以更快地编写、测试和调试Java代码。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签