JShell(交互式编程工具)
Java 9 引入了 JShell,这是 Java 的交互式编程工具(REPL: Read-Eval-Print Loop)。JShell 允许开发者在不创建完整 Java 项目的情况下,直接编写并执行 Java 代码片段。这使得学习和测试 Java 代码变得更加高效和直观。
1. 启动和退出 JShell
- 启动 JShell: 在命令行中输入 jshell 命令即可启动 JShell。
- 退出 JShell: 输入 /exit 或者按 Ctrl+D 可以退出 JShell。
$ jshell # 启动 JShell
| 欢迎使用 JShell -- 版本 9
| 输入: /help 获取键入提示
jshell> /exit # 退出 JShell
2. 编写和执行代码
在 JShell 中,可以直接输入 Java 代码并立即执行,无需编译整个项目。支持变量声明、表达式、方法、类等。
jshell> int x = 10; // 声明并初始化一个整数变量 x
x ==> 10
jshell> x + 5; // 计算表达式 x + 5 的结果
$2 ==> 15
jshell> String message = "Hello, JShell!"; // 声明并初始化字符串变量
message ==> "Hello, JShell!"
jshell> System.out.println(message); // 打印消息
Hello, JShell!
3. 查看变量和方法
JShell 提供了命令来查看已经定义的变量和方法。
- 查看所有变量: 使用 /vars 命令。
- 查看所有方法: 使用 /methods 命令。
jshell> /vars // 查看当前所有变量
| int x = 10
| String message = "Hello, JShell!"
jshell> /methods // 查看当前所有方法
| 无
4. 编辑代码片段
JShell 支持编辑已经定义的代码片段。使用 /edit 可以编辑变量、方法或者类。
jshell> int y = 20; // 声明并初始化变量 y
y ==> 20
jshell> /edit y // 编辑变量 y
5. 保存和加载会话
可以将当前的 JShell 会话保存到文件中,稍后可以重新加载会话。
- 保存会话: 使用 /save 命令。
- 加载会话: 使用 /open 命令。
jshell> /save session.jsh // 保存当前会话到文件 session.jsh
jshell> /exit // 退出 JShell
$ jshell session.jsh // 加载保存的会话
6. 导入包和使用库
JShell 支持导入外部库,可以通过 import 语句来导入 Java 标准库或自定义库。
jshell> import java.util.*; // 导入 Java 的 util 包
jshell> List<String> list = new ArrayList<>(); // 创建一个 ArrayList 对象
list ==> []
jshell> list.add("JShell"); // 向列表中添加元素
$3 ==> true
jshell> list.add("is cool!"); // 向列表中添加另一个元素
$4 ==> true
jshell> System.out.println(list); // 打印列表
[JShell, is cool!]
7. 定义和调用方法
可以在 JShell 中直接定义方法,然后立即调用。
jshell> int add(int a, int b) { // 定义一个方法来计算两个整数的和
...> return a + b;
...> }
| 创建方法 add(int, int)
jshell> add(5, 10); // 调用 add 方法
$5 ==> 15
8. 自定义类和使用
JShell 支持定义类和对象,使得可以在交互式环境中进行复杂的面向对象编程。
jshell> class Person { // 定义一个 Person 类
...> String name;
...> int age;
...>
...> Person(String name, int age) {
...> this.name = name;
...> this.age = age;
...> }
...>
...> String getInfo() {
...> return "Name: " + name + ", Age: " + age;
...> }
...> }
| 创建类 Person
jshell> Person p = new Person("Alice", 30); // 创建一个 Person 对象
p ==> Person@6d6f6e28
jshell> p.getInfo(); // 调用 getInfo 方法
$6 ==> "Name: Alice, Age: 30"
9. 快捷命令和帮助
- /help: 显示帮助信息。
- /reset: 重置 JShell 会话,清除所有已定义的变量、方法和类。
- /list: 列出所有输入的代码片段。
- /history: 显示历史命令。
jshell> /help // 获取帮助信息
总结
JShell 是 Java 9 引入的一个强大工具,尤其适合于快速测试和学习 Java 代码。它提供了一个简洁、互动的环境,使开发者能够快速编写、测试和迭代 Java 代码,而无需创建完整的项目。这对于学习、调试和原型开发非常有用。