JDK9 学习之二 - Jshell(java 函数变成交互式 shell)


声明:本文转载自https://my.oschina.net/yinlei212/blog/1553073,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

  1. Jshell介绍

谁说原生java不能函数式编成!

JShell(JAVA Shell tool)是用来学习java语言和代码设计的一个交互式工具。JShell是一个Read-Evaluate-Print Loop (REPL)阅读-键入-打印-循环系统(函数式编成),他可以进行代码声明、输入语句、输入表达式 然后直接显示结果。 然后这是一个命令行工具。

  1. 为什么使用Jshell

使用Jshell 你可以对程序过程中任意对象随时查看打印结果,而且可以根据实际情况立即作出调整。

写一个java 程序一般涉及到下面几个步骤:

1. 写一个完整的程序 2. 编译&修改编译错误 3. 运行程序 4. 看下哪里错了 5. 修改代码 6. 然后循环1->5 直到全部OK 

Jshell可以实验你的代码还可以探索性的开发你的程序。你可以随意编写代码,提炼出一个精良方法,也可以在jshell session里边试用一些不熟悉的API。 Jshell当然不能替代IDE啦,但是你可以先把代码在jshell里边试验成功以后(因为这样就不用重复上面那个重复编译的循环)然后就可以粘贴到你的IDE里边去用了。

  1. Jshell的启动和停止

Jshell 包含在JDK9里边,所以必须要安装JDK9。进入命令行(windows下是CMD),如果你没有将$JAVA/bin 加入到系统PATH中,那么你只能进入到$JAVA_HOME/bin 使用./jshell进行启动了

  1. Jshell启动两种模式

  • 正常模式
% jshell |  Welcome to JShell -- Version 9 |  For an introduction type: /help intro #这里已经进入jshell了。 jshell> 
  • 详情模式(-v)

详情模式是方便你看到例子和教程同步,也就是可以很方便得到引导和错误反馈。当你已经很熟悉这个工具了,那你就可以尝试使用其他正常的或者间接模式(其他模式) 启动详情模式用 -v 选项:

% jshell -v To exit JShell, enter /exit:  jshell> /exit |  Goodbye 
  1. 完整例子(功能演示)

leombp:~ Leo$ jshell -v jshell> /help intro                 #查看系统大概的帮助 |   |  intro |   |  使用 jshell 工具可以执行 Java 代码, 从而立即获取结果。 |  您可以输入 Java 定义 (变量, 方法, 类, 等等), 例如:  int x = 8 |  或 Java 表达式, 例如:  x + x |  或 Java 语句或导入。 |  这些小块的 Java 代码称为 '片段'。 |   |  这些 jshell 命令还可以让您了解和 |  控制您正在执行的操作, 例如:  /list |   |  有关命令的列表, 请执行: /help  jshell> test                        # 测试下详细模式的错误日志 |  错误: |  找不到符号 |    符号:   变量 test |    位置: 类  |  test |  ^--^  jshell> 1+1                         #可以很方便进行数字简单计算 $1 ==> 2 |  已创建暂存变量 $1 : int  jshell> int a=10                    #正常定义变量 a ==> 10 |  已创建 变量 a : int          jshell> String twice(String s){     #函数式定义方法    ...> return s + s;    ...> } |  已创建 方法 twice(String)  jshell> twice(                      #调用方法,这里类似Linux 按tab键可以想IDE一样进行提示。 twice(     jshell> twice("I Love This Game. ")                #调用成功 $4 ==> "I Love This Game. I Love This Game. " |  已创建暂存变量 $4 : String  jshell> $4                         #返回系统自动声明一个变量$4 $4 ==> "I Love This Game. I Love This Game. " |  $4 的值: String  jshell> int divide(int x,int y){   #定义一个方法进行异常测试    ...> return x /y ;    ...> } |  已创建 方法 divide(int,int)  jshell> dived                      #按tab进行提示 jshell> divide(10,0)               #异常 |  java.lang.ArithmeticException thrown: / by zero |        at divide (#6:2) |        at (#7:1)  jshell> /list                      #查看用户定义     1 : 1+1    2 : int a=10;    3 : String twice(String s){        return s + s;        }    4 : twice("I Love This Game. ")    5 : $4    6 : int divide(int x,int y){        return x /y ;        }    7 : divide(10,0)  jshell> "str".                     #测试下tab对对象的自动提示 charAt(                chars()                codePointAt(            codePointBefore(       codePointCount(        codePoints()            compareTo(             compareToIgnoreCase(   concat(                 contains(              contentEquals(         endsWith(               equals(                equalsIgnoreCase(      getBytes(               getChars(              getClass()             hashCode()              indexOf(               intern()               isEmpty()               lastIndexOf(           length()               matches(                notify()               notifyAll()            offsetByCodePoints(     regionMatches(         replace(               replaceAll(             replaceFirst(          split(                 startsWith(             subSequence(           substring(             toCharArray()           toLowerCase(           toString()             toUpperCase(            trim()                 wait(                     #测试自动导入 #Shift + Tab + i后出现意外的字符。 #Mac下是 `tab + i` 进行自动导入。 jshell> new JFrame 0: 不执行任何操作 1: import: javax.swing.JFrame 选项:                                    #我输入了 1 Imported: javax.swing.JFrame  jshell> new JFrame  jshell> /exit                            #退出命令 |  再见   

参考: Java Platform, Standard Edition Tools Reference

原:http://www.cockybook.com/?p=904

本文发表于2017年10月19日 00:34
(c)注:本文转载自https://my.oschina.net/yinlei212/blog/1553073,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1975 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1