JShell新手必知必会

简介: JShell是Java9引入的新工具,非常便捷,本文介绍该工具的使用方法。

JShell

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

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

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

Windows环境下JShell启动与退出

打开cmd,按照如下操作:

image.png

注意退出不能输入\exit:

image.png

JShell基本使用全攻略

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

    • 输入一个表达式/算式进行运算
    • 直接打印一个临时变量
    • 运行一个Java语句(可以带结尾分号也可以不带)
    • 可以定义变量
    • 可以直接覆盖变量而不担心已定义而导致不能重新定义
    • ……

    image.png

  2. 我们接着看简单的代码块:

    • 没有大括号就等待分号结尾然后执行。

    image.png
    image.png

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

    image.png
    image.png

  3. 定义方法,基本相当于过程化的函数:
    image.png
    能看出来这里还支持函数重载。
    JShell支持函数间的调用:
    image.png
    更厉害的是这里支持函数的向前引用,即支持一个函数调用其他哪怕暂时未被定义的函数。
    image.png
    这是支持的,但不能直接调用:
    image.png
    那我们创建这个未定义的方法:
    image.png
  4. JShell支持的面向对象:
    我们可以定义普通类并实例化:
    image.png
    可以利用类的对象引用属性和方法,甚至null也不会爆空指针,只是显示null。
    我们也可以定义枚举:
    image.png
    我们也可以使用接口:
    image.png
    可见,连注解都支持。
  5. import、文件IO与异常
    image.png
    可见:上述包是除了lang包以外,JShell自动为我们导入的包。
    异常的话,JShell自己会处理,貌似并不需要catch,比如IOException啊,FileNotFoundException。
    其他的包还是需要自己导入的:
    image.png
  6. 玩转临时变量
    image.png

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 显示变量
…… ……

说明:本文原载于CSDN,经本人搬运至阿里云开发者社区。

相关文章
|
6月前
|
数据采集 前端开发 Java
《手把手教你》系列技巧篇(十一)-java+ selenium自动化测试-元素定位大法之By tag name(详细教程)
【4月更文挑战第3天】该文介绍了Selenium自动化测试中元素定位方法的By ClassName,强调了解前端基础知识对Web自动化测试的重要性。文章提到,当元素没有特定属性值(如ID、类名或名称)时,可以使用tagName定位器,例如在查找表格数据或验证链接数量时。但要注意,如果仅通过tagName定位,可能会导致选取多个元素,建议结合其他属性以更精确地定位单个元素。文中还提供了Java代码示例,展示了如何使用tagName定位元素并执行自动化测试。
121 6
|
6月前
|
XML Java 测试技术
《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)
【4月更文挑战第7天】按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。使用这种方法几乎可以定位到页面上的任意元素。xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。
123 5
|
6月前
|
Web App开发 前端开发 Java
《手把手教你》系列技巧篇(九)-java+ selenium自动化测试-元素定位大法之By name(详细教程)
【4月更文挑战第1天】 这篇教程介绍了如何使用Selenium Webdriver通过name属性来定位网页元素,作为系列教程的一部分,之前讲解了id定位,后续还会有其他六种定位方法。文中以百度搜索为例,详细说明了定位搜索框(name="wd")并输入关键词“北京宏哥”的步骤,包括手动操作流程、编写自动化脚本以及代码实现。此外,还提供了查看和理解Selenium源码的方法,强调了`open implementation`选项用于查看方法的具体实现。整个过程旨在帮助读者学习Selenium的元素定位,并实践自动化测试。
124 0
|
6月前
|
数据采集 前端开发 JavaScript
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
【4月更文挑战第2天】该文介绍了WebDriver的元素定位方法,重点讲解了By ClassName。作者强调理解前端基础知识对自动化测试的重要性,并列举了8种定位方法,包括id、name、class name、tag name等。文中以百度搜索为例,展示了如何使用class name进行定位,并提供了相关Java代码。在实践中,注意class name含有空格时会导致定位失败的问题。
108 0
|
6月前
|
人工智能 算法 IDE
Python 新手最容易踩的坑(1)
Python 新手最容易踩的坑(1)
Python 新手最容易踩的坑(1)
|
5月前
|
安全 Linux 开发工具
1.Anaconda 安装配置,轻轻松松上手Python
1.Anaconda 安装配置,轻轻松松上手Python
114 0
|
6月前
|
Web App开发 前端开发 JavaScript
《手把手教你》系列技巧篇(二十)-java+ selenium自动化测试-元素定位大法之终卷(详细教程)
【4月更文挑战第12天】本文介绍了Selenium的八种元素定位方式,包括id、name、class name、css selector、link text、partial link text、tag name和xpath,并给出了每种方式的示例代码。建议在选择定位方法时,优先使用唯一性的id和name,其次考虑css或xpath,但要注意它们的性能影响。
217 6
|
6月前
|
SQL 分布式计算 算法
Python 新手最容易踩的坑
Python 新手最容易踩的坑
|
6月前
|
Java
与JShell一起舞动代码的魔法:Java9交互式编程体验
与JShell一起舞动代码的魔法:Java9交互式编程体验
57 0
|
6月前
|
存储 Java API
JAVA零基础小白入门上手教程day15-泛型&File(一)
JAVA零基础小白入门上手教程day15-泛型&File
75 0