在Java 9的JShell中有哪些有用的命令?

1. 什么是JShell

JShell是Java SE 9中引入的交互式编程环境。它提供了一个交互式的Shell界面,可以让开发者快速输入和测试Java代码片段。相较于在IDE中编写代码,JShell更加灵活、方便。

2. JShell中的有用命令

2.1 /help - 显示帮助信息

JShell中的/help命令可以输出所有可用命令的简要说明。这对于初学者来说是非常有用的。

/help

输出:

--- 常用命令 ---

/vars 打印所有定义的变量和方法。

/methods 打印所有可用的方法。

/types 打印所有可用的类型和包。

/reset 重新启动JShell。

/set feedback 设置反馈级别。

/list 列出最近编辑的代码。

/save [name] 保存供将来使用。

/open [name] 打开指定的JShell文件。

/close [name] 关闭指定的JShell文件。

/exit 退出JShell。

2.2 /vars - 显示所有定义的变量和方法

使用/vars命令可以查看JShell中定义的所有变量和方法。这对于需要调试代码时非常方便。

int a = 10;

String b = "Hello";

System.out.println(a);

System.out.println(b);

输出:

10

Hello

/vars

输出:

| int a = 10;

| String b = "Hello";

jshell>

2.3 /methods - 显示所有可用的方法

使用/methods命令可以显示JShell中可用的所有方法。它们可以是您定义的方法,也可以是Java库中的方法。

import java.util.Arrays;

Arrays.toString(new int[]{1,2,3});

输出:

[1, 2, 3]

/methods

输出:

| Arrays.toString(java.lang.Object[]) : java.lang.String

| Arrays.toString(short[]) : java.lang.String

| Arrays.toString(int[]) : java.lang.String

| Arrays.toString(char[]) : java.lang.String

| Arrays.toString(byte[]) : java.lang.String

| Arrays.toString(boolean[]) : java.lang.String

| Arrays.toString(float[]) : java.lang.String

| Arrays.toString(double[]) : java.lang.String

| Arrays.toString(java.lang.Object[],int,int) : java.lang.String

| ...

2.4 /types - 显示所有可用的类型和包

使用/types命令可以显示JShell中可用的所有类型和包。这些可以是Java SE中包含的类型和包或者您定义的类型和包。

System.out.println(Math.PI);

输出:

3.141592653589793

/types

输出:

| java.time.chrono.JapaneseChronology - class

| java.lang.Math - class

| java.util.logging.Level - class

| java.nio.charset.CharsetEncoder - class

| java.util.Map$Entry - interface

| java.util.FormatterClosedException - class

| java.util.Arrays - class

| java.util.NavigableMap - interface

| ...

2.5 /reset - 重新启动JShell

使用/reset命令可以清除JShell中的所有定义的变量、方法和类型。这对于需要重新开始编写新代码的情况非常有用。

int a = 10;

System.out.println(a);

/reset

输出:

| 欢迎使用Java版本 9 的JShell

| 类型变量 $1 等同于 Object

| 类型变量 $2 等同于 Object[]

| 类型变量 $3 等同于 java.util.List

| 类型变量 $4 等同于 java.util.List

| 类型变量 $5 等同于 java.util.List>

| 类型变量 $6 等同于 java.util.List>

| 类型变量 $7 等同于 java.util.List

| 类型变量 $8 等同于 java.util.List

| 类型变量 $9 等同于 java.util.List,并有 1 限制(s)

| 类型变量 $10 等同于 java.util.List,并有 2 限制(s)

| 类型变量 $11 等同于 java.lang.String,非空

| 类型变量 $12 等同于 java.util.random.Random

| 类型变量 $13 等同于 java.net.URI

| 类型变量 $14 等同于 java.time.LocalDateTime

| 类型变量 $15 等同于 java.lang.Integer

| 类型变量 $16 等同于 java.util.Locale.Category

| 类型变量 $17 等同于 java.util.Locale.LanguageRange

| 类型变量 $18 等同于 java.security.Permission

| 类型变量 $19 等同于 java.time.format.DateTimeFormatter

| 类型变量 $20 等同于 java.lang.Boolean

| 类型变量 $21 等同于 java.time.LocalDateTime

| 类型变量 $22 等同于 java.net.URL

| 类型变量 $23 等同于 java.time.Instant

| 类型变量 $24 等同于 java.time.LocalDate

| ...

2.6 /set feedback - 设置反馈级别

JShell的/set feedback命令可以帮助开发者提高生产力并更好地理解其代码。它控制反馈级别,以便包括在JShell的响应中提供更多或更少的信息。

/set feedback verbose

int a = "Hello";

输出:

| 错误:

| 不兼容的类型: String无法转换为int

| int a = "Hello";

| ^---------^

jshell>

2.7 /list - 列出最近编辑的代码

JShell的/list命令可以列出最近编辑的代码。它可以让开发者回顾JShell历史,并在黑板上练习代码。

String a = "Hello";

String b = "World";

/list

输出:

1 : String a = "Hello";

2 : String b = "World";

2.8 /save - 保存代码

JShell的/save命令可以将代码片段保存到本地文件系统中。

/save /Users/Username/Desktop/HelloWorld.jsh

int a = 10;

System.out.println(a);

输出:

10

jshell>

2.9 /open - 打开JShell文件

JShell的/open命令可以打开本地文件系统中的文件,并将其中的代码片段插入到当前JShell会话中。

/open /Users/Username/Desktop/HelloWorld.jsh

输出:

1 :

2 : int a = 10;

3 : System.out.println(a);

4 :

5 :

2.10 /close - 关闭JShell文件

JShell的/close命令可以关闭本地文件系统中的文件,并从当前JShell会话中移除其中的所有代码片段。

/close /Users/Username/Desktop/HelloWorld.jsh

输出:

jshell>

2.11 /exit - 退出JShell

JShell的/exit命令可以退出JShell。

/exit

输出:

| 再见!

3. 总结

JShell提供了一种新的、交互式的方式来编写和测试Java代码。JShell中的命令可以帮助开发者更高效、更快速地编写代码,而不是在IDE中来回切换文件。在本文中,我们介绍了JShell中的一些有用命令,这些命令可以帮助您更好地了解JShell并提高您的生产力。