文章目录

  • 前言
  • 介绍JShell
  • Windows环境下JShell启动与退出
  • JShell基本使用全攻略
  • JShell的一些命令

前言

很早就装了JDK9,因为有模块化,想尝尝鲜,不想却被JShell吸引过去。
不得不说,至少对于我个人,JShell都是一个非常便捷、高效的工具。

介绍JShell

JShell提供了一个交互式环境,允许快速、方便地尝试使用Java代码。JShell实现了所谓的“读取-执行-打印”循环(REPL)。使用这个机制,会提示用户输入一段代码。接着读取并执行它。然后JShell显示与代码相关的结果。接下来JShell会提示用户输入下一段代码,继续处理(如循环)。在JShell中,输入的每个代码段都被称为片段。

理解JShell的关键是使用它不需要输入完整的Java程序。每个输入的代码片段都能在输入的同时执行,这是可能的,因为JShell会自动处理与Java程序相关的许多信息,这允许用户只考虑具体功能,而不需要编写完整的程序。因此,JShell在初学Java的时候显得非常有用。

当然,JShell也可以供有经验的程序员使用。因为JShell存储了状态信息,所以可以在JShell中输入多行代码段,并运行它们。因此需要对某个概念建立起原型的时候,JShell是非常有用的,因为它允许以交互方式尝试使用代码,而不需要开发、编译完整的程序。

Windows环境下JShell启动与退出

打开cmd,按照如下操作:

注意退出不能输入\exit:

JShell基本使用全攻略

  1. 下图可见我们可以做很多基本操作:

    • 输入一个表达式/算式进行运算
    • 直接打印一个临时变量
    • 运行一个Java语句(可以带结尾分号也可以不带)
    • 可以定义变量
    • 可以直接覆盖变量而不担心已定义而导致不能重新定义
    • ……
  2. 我们接着看简单的代码块:
    • 没有大括号就等待分号结尾然后执行。

    • 有大括号就等待右大括号收尾。

  3. 定义方法,基本相当于过程化的函数:

    能看出来这里还支持函数重载。
    JShell支持函数间的调用:

    更厉害的是这里支持函数的向前引用,即支持一个函数调用其他哪怕暂时未被定义的函数。

    这是支持的,但不能直接调用:

    那我们创建这个未定义的方法:

    顺利完成!
  4. JShell支持的面向对象:
    我们可以定义普通类并实例化:

    可以利用类的对象引用属性和方法,甚至null也不会爆空指针,只是显示null。
    我们也可以定义枚举:

    我们也可以使用接口:

    可见,连注解都支持。
  5. import、文件IO与异常

    可见:上述包是除了lang包以外,JShell自动为我们导入的包。
    异常的话,JShell自己会处理,貌似并不需要catch,比如IOException啊,FileNotFoundException啊这些。
    其他的包还是需要自己导入的:

    那个IO的就不演示了……打住。。。
  6. 玩转临时变量

JShell的一些命令

JShell中的所有命令都是以/开头。

命令 功能
/! 运行刚刚输入的代码段
/n 指定要运行的第n个代码段
/exit 退出JShell
/edit 编辑一个代码段
/list 列出已输入的代码
/list count 列出已输入的count的声明
/imports 列出已导入的包名
/save *filename* 保存会话(当前源代码)
/save *filename* -all 保存会话(当前源代码),包括输入不正确的
/save *filename* -history 保存会话的历史(例如输入的命令列表)
/open *filename* 加载保存过的会话
/types 显示类、接口和枚举
/methods 显示方法
/vars 显示变量
…… ……

【Java】JShell工具上手即用相关推荐

  1. 十四种Java开发工具点评

    图形界面的java开发工具 JDK Borland 的JBuilder ,JDeveloper,VisualAge for Java jcreater. 常见的十五种Java开发工具的特点 1.JDK ...

  2. java 打包工具_Java打包Windows安装程序

    目前对于开发Windows桌面程序而言,Java Swing并不是最好的选择,但是对于Java/Android程序员来说,Swing是最快上手和最容易熟悉的语言,和Android类似,Swing也提供 ...

  3. Java并发工具辅助类代码实例

    java中的并发工具类 一:等待多线程完成的CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作. packag``.fuzhulei; import ja ...

  4. Hutool Java常用工具类汇总

    简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的". Hu ...

  5. java常用工具类和Hutool常用的工具类整理

    java常用工具类和Hutool常用的工具类整理 1.java常用工具类 1.1 Scanner类 /*** Scanner 类*/@Testpublic void testScanner() {Sc ...

  6. JAVA基础再回首(一)——基本概念、JAVA开发工具、JAVA基本语法

    JAVA基础再回首(一)--基本概念.JAVA开发工具.JAVA基本语法 学了java,做了android应用开发,现在回想起来,真的是一路坎坷..我在上章博客中提到了我以后的几个学习计划和目标就是把 ...

  7. java 报表_市占率第一的Java报表工具 - FineReport报表工具

    作为国产Java报表工具的优秀代表,FineReport报表工具不仅仅在报表设计的简单易用上表现出极大的优势,更在数据分析等复杂报表处理能力和报表管理等报表综合应用上凸显出其报表技术的成熟和领先. 一 ...

  8. java开发工具IntelliJ IDEA全面教程合集

    IntelliJ IDEA在业界被公认为优秀的Java开发平台之一,在智能代码助手.代码自动提示.重构.J2EE支持.Ant.JUnit.CVS整合.代码审查. 创新的GUI设计等方面表现突出,并支持 ...

  9. 达内java开发软件怎么装,达内培训专家告诉你8个有用的Java开发工具

    原标题:达内培训专家告诉你8个有用的Java开发工具 在Stormpath(一款用户管理和认证服务),我们认真对待质量和效率.任何一个优秀的工匠,仅仅拥有天赋是不够的,你在工作中还需要正确的工具.工程 ...

最新文章

  1. [学习笔记]CDQ分治
  2. C++ Primer 5th笔记(3)字符串、向量和数组:字符串
  3. ThhinkPHP5隐藏入口文件index.php
  4. beego 快速入门
  5. python 动态_python实现动态创建类的方法分析
  6. 详解面向对象、构造函数、原型与原型链
  7. 【IE6的疯狂之四】IE6文字溢出BUG
  8. [剑指offer]面试题第[35]题[Leetcode][第138题][JAVA][复杂链表的复制][暴力][HashMap][复制链表]
  9. php 判斷數據庫表是否存在,phpl判斷mysq數據庫中的某個數據表是否存在的方法總結...
  10. 【NetWebApi】接口参数传递笔记
  11. 我如何开始学习Web开发
  12. Java实现把两个数组合并为一个的方法总结
  13. matlab 怎么保存,matlab怎么保存程序
  14. 一款比较好看的javascript轮播图代码
  15. 【web素材】11—15套免费网站后台管理模板
  16. Jenkins与DevOps持续交付详解
  17. 阿里云对象存储OSS(Object Storage Service)
  18. 当鼠标移动到表单上,改变表单的颜色
  19. 激光抗大气湍流传输研究取得进展
  20. 华为荣耀9短接点 | 华为荣耀9拆机短接TP测试点 | 华为荣耀9怎么短接出HUAWEI USB COM 1.0 (COM3)

热门文章

  1. js数组sort排序原理
  2. 手游产品经理初探(三)产品中的玩家行为
  3. AngularJS中页面传参方法
  4. 与非CCR代码互操作
  5. 在jsp中使用smartupload组件上传文件- -
  6. JAVA:贪吃蛇源代码
  7. 惠斯通电桥信号调理芯片_elmos推出专为汽车应用开发的传感器信号调理芯片E520.47...
  8. gitlab-ee使用mysql_在 GitLab 我们是如何扩展数据库的
  9. java mac pos_pos终端mac国密(sm4)算法(java实现)
  10. c语言程序前言,C语言 程序代码编写规范前言