在Java 9中,REPL的不同状态有哪些?

Java 9中的REPL

REPL指的是"Read-Eval-Print Loop"即读取-求值-打印循环,是一种编程环境,可以让用户输入代码并立即看到结果。Java 9中引入了一个名为JShell的REPL工具,可以让Java开发人员更方便地探索和学习Java语言的特性。在JShell中,开发人员可以在没有编写完整Java应用程序的情况下执行独立的Java语句。

不同状态

JShell在执行Java语句时有几种不同的状态,这些状态在交互式环境中都有不同的含义。

状态1:开始状态

当您第一次启动JShell时,您将进入JShell的初始状态。在此状态下,您可以输入任何有效的Java语句,例如变量申明和表达式。

jshell> int x = 5;

x ==> 5

在上面的示例中,我们在JShell中定义了一个名为x的整数变量,并将其赋值为5。JShell会显示变量x的值,因为我们没有在语句末尾使用分号来禁止输出。

状态2:表达式状态

在JShell中,您可以进入表达式状态,以便评估和显示表达式的值。

jshell> /set mode EXPRESSION

| 已设置为: EXPRESSION

jshell> 3 + 4

$1 ==> 7

jshell> "hello, world"

$2 ==> "hello, world"

在上面的示例中,我们使用JShell的/set mode命令来将其模式更改为表达式模式。然后,我们输入了两个不同的表达式:一个加法表达式和一个字符串。

在表达式模式下,如果您没有在语句结尾处使用分号,JShell将显示表达式的结果。

状态3:多行状态

在JShell中,有时您需要编写多行Java代码,而不仅仅是单个语句。JShell使这变得容易。

jshell> /set mode MULTI_LINE

| 已设置为: MULTI_LINE

jshell> String json = "{\n" +

... " \"firstName\": \"John\",\n" +

... " \"lastName\": \"Doe\",\n" +

... " \"age\": 25\n" +

... "}";

json ==> "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"age\": 25\n}"

在上面的示例中,我们使用JShell的/set mode命令将其模式更改为多行模式。然后,我们使用一个名为json的字符串变量来存储一个包含JSON字符串的值。

请注意,每行代码的结尾都有一个加号。这告诉JShell您正在编写多行代码,而不是一个单独的语句。

状态4:编辑状态

在JShell中,您可以进入编辑模式,以便编辑之前输入的代码。

jshell> /edit $1

在编辑模式下,您可以使用常规编辑器命令编辑文本。例如,在大多数编辑器中,您可以使用Ctrl + A选择所有文本,然后使用Ctrl + X剪切该文本,以便您可以将其粘贴到其他地方。

状态5:继续状态

如果您输入的Java代码需要添加更多内容,但当前状态不允许这样,JShell将显示一个“continue?”提示。

jshell> if (x != 5)

... {

... System.out.println("x is not 5");

... }

| 缺少 '}',请使用 ';' 继续

jshell> ;

在上面的示例中,我们输入了一个if语句,但JShell无法使用该多行模式,因此我们看到了一个继续提示。总是使用semicolon (;)来告诉JShell您想要完成之前输入的语句。

综上所述,JShell中的不同状态都有其各自的含义,开发人员可以利用它们来更方便地学习和探索Java语言的特性。

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

后端开发标签