JShell:Java REPL综合指南
\
本文要点
\\
- Java Shell或JShell是官方提供的读取-求值-打印-循环,通常称为REPL,是在Java 9中引入的。\\t
- JShell提供了一个交互式shell,用于快速原型、调试、学习Java及Java API,所有这些都不需要public static void main方法,也不需要在执行之前编译代码。\\t
- 随着Java 10引入了“var”关键词,JShell简单了许多(而且更实用了)。\\t
- 本文将对JShell做一个全面的介绍,了解它所有的命令、用法以及它最有效的使用方法。\\t
- JShell非常适合提供中间反馈。它看上去可能没什么大不了的,但是,所有这些小事情(如在IDE中编译或运行单元测试)会随着时间推移慢慢积累。\
\\
JShell是什么?
\\
Java Shell或JShell是官方提供的读取-求值-打印-循环,通常称为REPL,是在Java 9中引入的。它提供了一个交互式shell,用于快速原型、调试、学习Java及Java API,所有这些都不需要public static void main方法,也不需要在执行之前编译代码。此外,随着Java 10引入了var关键词,JShell简单了许多(而且更实用了)。
\\
入门
\\
注意:在这份指南中,为了使用关键词var,我们将使用Java 10,因此,为了跟着这份指南操作,你务必要确保至少已经安装了Java 10。
\\
JShell的启动很容易,在命令行输入jshell即可。你会看到一条欢迎信息,而shell会等待你输入命令或任何合法的Java表达式。
\\
\$ jshell\| Welcome to JShell -- Version 10.0.2\| For an introduction type: /help intro
\\
让我们执行第一条命令。在shell提示符下,输入var greeting = \"hello\",按下\u0026lt;enter\u0026gt;。你会看到下面的输出:
\\
\jshell\u0026gt; var greeting = \"hello\"\greeting ==\u0026gt; \"hello\"
\\
你会注意到,它回显了greeting的值,确认当前值为hello。你可能还会注意到,你的表达式不需要分号。这是一个小而漂亮的特性!
\\
为了完成我们的问候语,我们需要的一位听众。输入var audience =并按下\u0026lt;enter\u0026gt;。这次,JShell认识到,你的表达式不完整,并允许你在下一行继续输入。输入\"world\"并按下\u0026lt;enter\u0026gt;完成表达式。和前面一样,JShell会回显确认已设置的值。
\\
\jshell\u0026gt; var audience =\ ...\u0026gt; \"world\"\audience ==\u0026gt; \"world\"
\\
Tab补全
\\
你首先注意到的其中一件事情是,它完美集成了tab补全。
\\
让我们把字符串greeting和audience串联起来,组成一个新变量saying。先输入var saying = gr,然后按下\u0026lt;tab\u0026gt;。你会看到,变量greeting自动补全了。用同样的方法输入变量audience,按下\u0026lt;enter\u0026gt;,就可以看到串联结果了。
\\
\jshell\u0026gt; var saying = gr\u0026lt;tab\u0026gt; + aud\u0026lt;tab\u0026gt;\saying ==\u0026gt; \"helloworld\"
\\
Tab补全就和你预想的一样,自动补全唯一值或者在不确定时提供可能的值。它对之前输入的任何表达式、对象和方法均有效。注意,它对内置关键词无效。
\\
如果你想要把变量saying变成大写,但是又没记住方法的具体名称,那么你只要输入saying.to,然后按下\u0026lt;tab\u0026gt;,就可以看到所有以to开头的所有有效方法了。
\\
\jshell\u0026gt; saying.to\u0026lt;tab\u0026gt;\toCharArray() toLowerCase( toString() toUpperCase(
\\
可能有参数的方法显示时使用开括号,而没有参数的方法显示时使用闭括号。
\\
错误
\\
如果你不小心犯了个错误或者输入了一个非法表达式、方法或命令,那么JShell会立即反馈,显示错误,标注问题。
\\
\jshell\u0026gt; saying.subString(0,1)\| Error:\| cannot find symbol\| symbol: method subString(int,int)\| saying.subString(0,1)\| ^--------------^
\\
方法签名
\\
让我们调用toUpperCase方法,但推迟添加任何额外的参数,或者以一个圆括号结束。再次按下\u0026lt;tab\u0026gt;。这次,你会看到toUpperCase方法所有可用的方法签名;一个有一个Locale参数,另一个没有任何参数。
\\
\jshell\u0026gt; saying.toUpperCase(\Signatures:\String String.toUpperCase(Locale locale)\String String.toUpperCase()\\\u0026lt;press tab again to see documentation\u0026gt;
\\
文档(JavaDoc)
\\
如果你第三次按下\u0026lt;tab\u0026gt;,你就会看到toUpperCase(Locale)方法的JavaDoc文档。
\\
\jshell\u0026gt; saying.toUpperCase(\String String.toUpperCase(Locale locale)\Converts all of the characters in this String to upper case ... (shortened for brevity)
\\
继续按下\u0026lt;tab\u0026gt;,就可以依次查看所有可用的方法签名及其相关文档。
\\
导入
\\
让我们把这个例子扩展到其他的听众,如Universe和Galaxy,而不仅仅是hello world。首先创建一个名为audiences的列表,其中有三个不同的听众:world、universe、galaxy。使用List构造函数和Java 9提供的静态工厂方法,只需要一行代码即可实现。
\\
\jshell\u0026gt; var audiences = new ArrayList\u0026lt;\u0026gt;(List.of(\"world\
JShell:Java REPL综合指南相关推荐
- repl java9_Java 9抢先体验:与JShell进行动手实践– Java REPL
repl java9 从今天开始,如何开始使用Java 9的最酷功能之一? 上周末,我终于开始尝试使用Java 9的早期访问版本.第一站是JShell,它也被称为Project Kulla. 首先让我 ...
- Java 9抢先体验:与JShell的动手实践– Java REPL
从今天开始如何开始使用Java 9最酷的功能之一? 上周末,我终于开始尝试使用Java 9的早期访问版本了.第一站是JShell,它也被称为Project Kulla. 首先让我鼓起勇气尝试早期访问J ...
- 01 | Java入门级学习指南
01 | Java入门级学习指南 前言 第一部分:JAVA 设计和编程基础 1.1Java 语言基础 1.2Java 面向对象 1.3Java 核心类库 1.4Java SE实战项目 第二部分:数据库 ...
- 计算机毕业设计Java高考报考指南网站(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java高考报考指南网站(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java高考报考指南网站(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...
- Java面试参考指南(二)
2019独角兽企业重金招聘Python工程师标准>>> 访问修饰符 对于基本的OOPS(面向对象)概念,请看Java面试参考指南的第一部分.访问修饰符规定了一个类如何访问另一个类及它 ...
- EOS账户和钱包综合指南
EOS账户和钱包综合指南 注意:本教程适用于私有单节点测试网络,但只需稍作修改即可在公用测试网上使用. 介绍 教程受众 本教程适用于想了解钱包和账户管理,如何使用cleos来管理钱包和账户,以及钱包和 ...
- Java性能优化指南,及唯品会的实战
来了唯品会一年多,不少时间花在与服务化框架.业务应用的性能的缠斗上. 前几天正好趁着中生代社区的十月十城技术沙龙,把脑海中关于性能优化的记忆全部理了一遍-.讲完回家,又本着认真严谨的态度再理了一遍,终 ...
- sqoop2 java api实现_Sqoop2 Java客户端API指南
原文连接:http://sqoop.apache.org/docs/1.99.6/ClientAPI.html Sqoop Java客户端API指南 这篇文章秒描述了额如何在外部应用中使用sqoop ...
- Java Calendar使用指南
Java Calendar使用指南 @(JAVA)[java] 完整代码请见:https://github.com/lujinhong/lujinhong-commons/tree/master/lu ...
最新文章
- 内蒙古公安原创扫黑除恶主题MV《以警之名》全国首发
- ++i和i++效率谁高
- matlab模拟钢琴演奏
- Android知识点
- keepalived 服务器内存持续升高问题
- python textwrap_python2.7.3编译python模块学习- textwrap 文本包装和填充
- Ext.MessageBox.Show使用Progress
- android studio简易记账本,Android记账本
- koa2从搭建项目到实现API
- stardict安装及其他
- java类与对象实验报告心得体会_java实验报告类与对象
- 数字图像/视频处理MATLAB基本操作
- Tecplot云图——数据文本格式1
- 大数据工具之Trino
- 《iPad开发从入门到精通》——6.5节地图信息
- 软件开发的那些坑,你跳了没?这篇文章价值千万(一)
- 基于图像的虚拟换装:Morphing architectures for pose-based image generation of people in clothing
- 阿里云云盾安全事件提醒:挖矿程序
- 利用Python爬取国家水稻数据中心的品种数据
- vue学习【非父子组件传值问题(Bus/总线/观察者模式)】
热门文章
- oracle 监听服务自动停止与无法启动问题
- HTML 中有用的字符实体
- mac 用 brew
- WaitHandle.WaitAll 方法在WPF工程中的应用
- Windows Phone 几种页面间传递数据的方式
- 周洪立:一个外交官眼里的盛大文化
- ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline - Part II
- grails springboot_groovy 使用spring boot
- Python游戏开发:最强大脑第一关,数字华容道
- 数据库归档及热点库_postgresql连续归档及时间点恢复的操作