Java JShell 是一个交互式 REPL(Read-Eval-Print Loop)工具,从 Java 9 开始引入。以下是使用指南:
1. 启动 JShell
bash
# 直接启动
jshell
# 启动时指定模块路径
jshell --module-path <path>
# 启动时执行初始化脚本
jshell --startup <filename>
2. 基本操作
输入 Java 代码
java
// 直接输入表达式
jshell> 2 + 2
$1 ==> 4
// 定义变量
jshell> int x = 10
x ==> 10
// 定义方法
jshell> String greet(String name) {
...> return "Hello, " + name;
...> }
| 已创建 方法 greet(String)
// 调用方法
jshell> greet("World")
$3 ==> "Hello, World"
3. 常用命令
/help - 查看帮助
bash
jshell> /help
jshell> /help intro # 查看简介
jshell> /help shortcuts # 查看快捷键
/list - 列出代码片段
bash
jshell> /list # 列出所有片段
jshell> /list -all # 列出所有(包括自动生成的)
jshell> /list -start # 列出启动代码
/vars - 查看变量
bash
jshell> /vars
| int x = 10
/methods - 查看方法
bash
jshell> /methods
| String greet(String)
/types - 查看类型
bash
jshell> /types
| class Person
/edit - 编辑代码
bash
jshell> /edit greet # 编辑特定方法
jshell> /edit 1 # 编辑第1个代码片段
/save 和 /open
bash
# 保存会话到文件
jshell> /save mysession.jsh
# 从文件加载代码
jshell> /open mysession.jsh
# 保存所有代码(包括自动生成的)
jshell> /save -all mysession.jsh
/drop - 删除代码片段
bash
jshell> /drop x # 删除变量x
jshell> /drop 1 # 删除第1个代码片段
/reset - 重置会话
bash
jshell> /reset # 重置所有状态
/exit - 退出
bash
jshell> /exit
4. 实用特性
自动补全
bash
# 按 Tab 键补全
jshell> Sys<Tab> # 会自动补全为 System
jshell> System.<Tab> # 显示 System 类的所有方法
查看导入
bash
jshell> /imports # 查看已导入的包
设置反馈模式
bash
jshell> /set feedback verbose # 详细模式
jshell> /set feedback concise # 简洁模式
jshell> /set feedback normal # 普通模式(默认)
jshell> /set feedback silent # 静默模式
查看历史命令
bash
jshell> /history # 查看历史命令
5. 高级用法
创建类
java
jshell> class Person {
...> private String name;
...>
...> public Person(String name) {
...> this.name = name;
...> }
...>
...> public String getName() {
...> return name;
...> }
...> }
| 已创建 类 Person
jshell> Person p = new Person("Alice")
p ==> Person@5e91993f
jshell> p.getName()
$8 ==> "Alice"
异常处理
java
jshell> try {
...> int result = 10 / 0;
...> } catch (ArithmeticException e) {
...> System.out.println("Error: " + e.getMessage());
...> }
Error: / by zero
使用外部库
bash
# 启动时指定类路径
jshell --class-path lib/*.jar
6. 快捷操作
| 快捷键 | 功能 |
|---|---|
| Ctrl+L | 清屏 |
| Ctrl+R | 反向搜索历史 |
| Ctrl+S | 正向搜索历史 |
| Ctrl+C | 终止当前输入 |
7. 示例:快速测试代码
java
// 快速测试算法
jshell> int[] numbers = {3, 1, 4, 1, 5, 9, 2, 6}
numbers ==> int[8] { 3, 1, 4, 1, 5, 9, 2, 6 }
jshell> Arrays.sort(numbers)
jshell> Arrays.toString(numbers)
$2 ==> "[1, 1, 2, 3, 4, 5, 6, 9]"
// 测试流操作
jshell> List<String> list = List.of("Java", "Python", "C++")
list ==> [Java, Python, C++]
jshell> list.stream().filter(s -> s.startsWith("J")).collect(Collectors.toList())
$3 ==> [Java]
8. 退出保存设置
bash
# 设置自动保存历史
jshell> /set history permanent
jshell> /set start -retain mysetup.jsh
JShell 非常适合:
- 快速测试代码片段
- 学习 Java 语法
- 原型设计和实验
- 调试和探索 API