JDK工具包:jshell

简介

使用 jshell 工具可以执行 Java 代码,从而立即获取结果。

您可以输入 Java 定义(变量、方法、类等等)

例如:

int x = 8

或 Java 表达式,例如:

x + x

或 Java 语句或导入。

这些小块的 Java 代码称为“片段”。

退出

/exit

片段 ID

输入的每个代码片段有自己的唯一片段 ID。即使再次输入相同的片段,它都会具有新 ID。

对于普通片段,ID是一个增长的编号。对于失败且出错的片段,其片段 ID

以 "e" 开头。对于启动中的片段,其 ID 以 "s" 开头。

您还可以使用连字符分隔开始 ID 和结束 ID,以此来引用 ID 范围。例如,'1-4' 与 '1 2 3 4' 相同。

要查看一个或多个片段的 ID

/list ID编号

要查看所有片段的 ID,包括失败片段、启动片段和覆盖片段,请使用

/list -all

编辑的说明

jshell 工具提供行编辑支持,允许您在片段和命令中

  • 导航并进行编辑。您可以编辑当前命令/片段,也可以
  • 从历史记录中检索以前的命令/片段,进行编辑并执行。
  • 此支持类似于 readline/editline,具有与 emacs 相似的
  • 简单绑定。还有特定于 jshell 工具的关键字序列。

jshell 工具的快捷方式

操作 效果
Tab 补全 Java 标识符或 jshell 命令
Shift+Tab 然后 v 将表达式转换为变量声明
Shift+Tab 然后 m 将语句转换为方法声明
Shift+Tab 然后 i 为此标识符添加导入
Ctrl+L 清除屏幕并重新输出片段
Ctrl+U 终止整行

光标位置移动

前提:输入当前片段(不要执行)

int x = 10

使用下列操作,进行体会:

操作 效果
左箭头或 Ctrl+B 向后移动一个字符
右箭头或 Ctrl+F 向前移动一个字符
Ctrl+A 移至行的开头
Ctrl+E 移至行的结尾
Alt/Meta+B 向后移动一个单词
Alt/Meta+F 向前移动一个单词

补充:meta键是以前MIT计算机键盘上的的一个特殊键,Macintosh的Command键也被用作此键 有人将它称为花键。如果你键盘没有使用Alt

浏览历史记录

前提:随便输入几条Java语句执行

jshell> int x = 2
x ==> 2 jshell> x + x
$4 ==> 4 jshell>

使用下列操作,进行体会:

操作 效果
上箭头或 Ctrl+P 向上移动一行,向后浏览历史记录
下箭头或 Ctrl+N 向下移动一行,向前浏览历史记录
Ctrl+R 向后搜索历史记录

基本编辑

前提:输入当前片段(不要执行)

int x = 10

使用下列操作,进行体会:

操作 效果
Delete 删除光标处或其后面的字符,具体取决于操作系统
Backspace 删除光标前面的字符
Ctrl+K 删除从光标到行结尾的文本
Alt/Meta+D 删除从光标到单词结尾的文本
Ctrl+W 删除从光标到前一个空格的文本
Ctrl+Y 将最近删除的文本粘贴到行中
Alt/Meta+C 单词首字母大写
Alt/Meta+U 将单词转换为大写
Alt/Meta+L 将单词转换为小写

重新评估以前输入片段

重新评估上一个片段使用的方法为:

/!

重新评估之前的第 n 个片段:可以使用斜杠加减号加数字 n 的方式

例如:

/-4
jshell> 2 + 2
$1 ==> 4 jshell> /!
2 + 2
$2 ==> 4 jshell> int z
z ==> 0 jshell> /-1
int z;
z ==> 0 jshell> /-4
2 + 2
$5 ==> 4

可以使用片段 ID 或 ID 范围指定要重新评估的片段。

ID 范围使用通过连字符分隔的两个 ID 表示,例如:

3-17

可以使用启动和错误片段,例如:

s3-s9 或 e1-e4

可以使用任意数量的 ID 或 ID 范围,例如:

/3-7 s4 14-16 e2

最后,可以通过输入 ctrl-R 后跟要搜索的字符串,在历史记录中向后搜索。

语句引入简要

编写一个文本文件

例如(mldn.txt保存位置D:\mldn.txt):

System.out.println("Hi,jshell");
System.out.println("xx,xx");

在jshell中执行:

/open d:/mldn.txt
jshell> /open d:/mldn.txt
Hi,jshell
xx,xx

现在我们可以体会到,我们只需要编写核心结构的代码即可,减少了对于结构化的需求。



JDK工具包:jshell的更多相关文章

  1. 方法的调用-JDK的JShell简单使用

    方法的调用 方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法.在 主方法中,直接写要调用的方法名字就可以调用了. public static ...

  2. Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库

    http://www.iteye.com/topic/1113732 原则网址 Java源码初接触 如果你进行过一年左右的开发,喜欢用eclipse的debug功能.好了,你现在就有阅读源码的技术基础 ...

  3. Android 学习第1课,JDK工具包的安装

    1. jdk 的下载 目前为止,jdk的最新版是jdk8,http://www.oracle.com/technetwork/java/javase/downloads/index.html 到这里下 ...

  4. java基础-jdk工具包

    1. 标准工具 这些工具都是JDK提供的,通常都是长期支持的工具,JDK承诺这些工具比较好用.不同系统.不同版本之间可能会有差异,但是不会突然就有一个工具消失. 1.1 基础包 (extcheck, ...

  5. 从vmware下载到Linux环境下jdk和maven的安装

    写在前面:个人总结,如有不对请指出 操作环境: 操作系统:window7 企业版 处理器:Intel Core i5-4200U CPU @ 1.6GHz 内存:8G 系统类型:64位操作系统 需要安 ...

  6. 别再面向 for 循环编程了,JDK 自带的观察者模式就很香!

    大家好,你还在面向 for 循环编程吗? 还有谁不会用观察者模式吗? 本篇栈长带来<观察者模式>理论及实战- 什么是观察者模式? 观察者模式(Observer Pattern)定义了对象间 ...

  7. JVM内存监控工具 Jvisualvm

    这个工具是官方提供的,直接在JDK工具包下的bin目录找找就可以找到,或者打开cmd直接输入"jvisualvm"即可打开该工具(配置好java环境变量). 需要在catalina ...

  8. Java问题总结

    1.如何查看使用java的版本 cmd-->java -version 2.如何下载jdk,sdk Java.JDK(工具包)的安装_百度经验http://jingyan.baidu.com/a ...

  9. [翻译]现代java开发指南 第二部分

    现代java开发指南 第二部分 第二部分:部署.监控 & 管理,性能分析和基准测试 第一部分,第二部分 =================== 欢迎来到现代 Java 开发指南第二部分.在第一 ...

  10. Java的必备开发工具

    身为一个Java开发的爱好者,你不得不承认需要安装以下软件 NO.1 Java开发工具包 Java JDK 可以说这个工具包不得不安装,因为这个工具包是开发Java程序的核心! Java JDK工具包 ...

随机推荐

  1. 开源项目分享:ChatGPT 控制台聊天应用

    开源项目分享:ChatGPT 控制台聊天应用 分享一个我最近完成的一个小应用,一个ChatGPT 的控制台聊天应用,大家都在搞AI,我也来玩一玩,顺便分享到社区,有兴趣的小伙伴可以去我的github主 ...

  2. 七年之痒!一个 PHP 程序员职业生涯的自述

    大家好,我是码农先森. 今年刚好是我毕业的第七个年头,在婚姻感情当中都有一种「七年之痒」的说法,这次我把这个词「七年之痒」用一次在我的职业生涯复盘上.七年前我从告别校园,踏入互联网编程行业,七年后我依 ...

  3. .NetCore 3.1 教程之 EFCore连接Mysql DBFirst模式 从数据库生成实体

    一:创建EF的类库,同时将此项目设置为启动项(为Scaffold-DbContext -tables指令使用),同时安装2个包   ①Microsoft.EntityFrameworkCore.Too ...

  4. CentOS7的一些常规操作

    1.启动或者重启sshd服务: systemctl stop sshd.service systemctl start sshd.service systemctl restart sshd.serv ...

  5. this,构造器,static,final,单例模式

    this关键字 在java中this是一个引用变量,即指向当前对象地址的引用(指针),→可以把this当作当前对象,便于更好的索引. this() 实际是调用了当前对象的构造器 1. 引用当前对象的属 ...

  6. 30万奖金池鼓励工控人,AIRIOT智慧物联应用场景创新大赛等你来战!

    随着工业和智慧领域数智化发展步伐的逐步加快,智慧物联应用场景越来越广泛,涵盖了智慧城市.智能园区.智慧能源.智慧电力.智能制造.工业物联网等多个领域.航天科技控股集团股份有限公司举办[AIRIOT智慧 ...

  7. 使用 Hugging Face 推理终端搭建强大的“语音识别 + 说话人分割 + 投机解码”工作流

    Whisper 是当前最先进的开源语音识别模型之一,毫无疑问,也是应用最广泛的模型.如果你想部署 Whisper 模型,Hugging Face 推理终端 能够让你开箱即用地轻松部署任何 Whispe ...

  8. Java设计模式-责任链模式,应用接口多个参数验证,订单多个费用的计算

    Java设计模式-责任链模式,应用接口多个参数验证,订单多个费用的计算 1.定义请求和返回对象的上下文对象 package com.example.core.mydemo.java.filter; i ...

  9. java.sql.SQLException: Connection is read-only. Queries leading to data modification are not

    java.sql.SQLException: Connection is read-only. Queries leading to data modification are not 产生的原因:事 ...

  10. mysql自带test数据库表的默认属性:Collation latin1_swedish_ci 更新为utf8_general_ci,解决MYSQL数据库乱码

    ## mysql自带test数据库表的默认属性:Collation latin1_swedish_ci 更新为utf8_general_ci,解决MYSQL数据库乱码USE test;CREATE T ...