1.官方Feature
222: jshell: The Java Shell (Read-Eval-Print Loop)
2.产生背景
像Python 和 Scala 之类的语言早就有交互式编程环境 REPL (read - evaluate - print - loop)了,以交互式的方式对语句和表达式进行求值。开发者只需要输入一些代码,就可以在编译前获得对程序的反馈。而之前的Java版本要想执行代码,必须创建文件、声明类、提供测试方法方可实现。
3.设计理念
即写即得、快速运行
4.实现目标
Java 9 中终于拥有了 REPL工具:jShell。利用jShell在没有创建类的情况下直接声明变量,计算表达式,执行语句。即开发时可以在命令行里直接运行java的代码,而无需创建Java文件,无需跟人解释”public static void main(String[] args)”这句废话。
jShell也可以从文件中加载语句或者将语句保存到文件中。
jShell也可以是tab键进行自动补全和自动添加分号。
5.使用举例
调出jShell
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-faf88c5106f3fa1c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/331)
获取帮助
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-61378e125833f07b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/529)
基本使用
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-3d3b8bff6a576b3a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/438)
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-1c4319dce00b127b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/346)
Tips:在JShell 环境下,语句末尾的“;” 是可选的。但推荐还是最好加上。提高代码可读性。
导入指定的包
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-6e60ac3daff811f2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/256)
默认已经导入如下的所有包:(包含java.lang包)
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-f1007349ae4bc156.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/296)
只需按下 Tab 键,就能自动补全代码
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-03b2fc4ad4fe9527.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/576)
列出当前 session 里所有有效的代码片段
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-a8ac006cba06c501.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/318)
查看当前 session 下所有创建过的变量
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-38ccaec12218b619.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/205)
查看当前 session 下所有创建过的方法
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-bd621dae2e8fd976.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/197)
Tips:我们还可以重新定义相同方法名和参数列表的方法,即为对现有方法的修改(或覆盖)。
使用外部代码编辑器来编写 Java 代码
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-b05fe1adb4a50629.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/283)
从外部文件加载源代码
指定目录下提供HelloWorld.java文件:
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-6f7591584d454965.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/567)
使用/open命令调用:
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-b7adfa9cabac61b7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/415)
没有受检异常(编译时异常)
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-18f4cdc4eeee55bd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/430)
说明:本来应该强迫我们捕获一个IOException,但却没有出现。因为jShell在后台为我们隐藏了。
退出jShell
![技术分享图片](http://upload-images.jianshu.io/upload_images/9654439-7ac36dcf406c0bb0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/149)
作者:尚硅谷面试官宋红康
链接:https://www.jianshu.com/p/3f8b1783b1d1
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。