6. 新语法结构

新的语法结构,为我们勾勒出了 Java 语法进化的一个趋势,将开发者从复杂、繁琐的低层次抽象中逐渐解放出来,以更高层次、更优雅的抽象,既降低代码量,又避免意外编程错误的出现,进而提高代码质量和开发效率。

6.1 Java的REPL工具: jShell命令

JDK9的新特性

Java 终于拥有了像Python 和 Scala 之类语言的REPL工具(交互式编程环境,read - evaluate - print - loop):jShell。以交互式的方式对语句和表达式进行求值。即写即得、快速运行。

利用jShell在没有创建类的情况下,在命令行里直接声明变量,计算表达式,执行语句。无需跟人解释”public static void main(String[] args)”这句"废话"。

使用举例

  • 调出jShell

Microsoft Windows[版本10.0.22000.1574](c)Microsoft Corporation。保留所有权利。
C: \Users\WQC> jshell欢迎使用 JShell--版本11.0.17要大致了解该版本,请键入:/help intro
jshell>
  • 获取帮助

jshell> /help intro
  • 基本使用

jshe11>System.out.println("你好! wor1d");
你好!world
jshe11>int i =10;
i==>10
ishe11> int j=20;
j==>20
jshell> int k= i + j;
k==>30
jshell>System.out.print1n(k);
30
jshell> public int add(int m,int n){...> return m + n;...> }
|  已创建 方法 add(int,int)
jshell>int k = add(1,2);
k==>3
jshell>system.out.println(k);
3
  • 导入指定的包

jshell> import java.util.*
  • 默认已经导入如下的所有包:(包含java.lang包)

jshell> /imports
|    import java.io.*
|    import java.math.*
|    import java.net.*
|    import java.nio.file.*
|    import java.util.concurrent.*
|    import java.util.function.*
|    import java.util.prefs.*
|    import java.util.regex.*
|    import java.util.stream.*
|    import java.util.*
  • 只需按下 Tab 键,就能自动补全代码 (部分关键字)

  • 列出当前 session 里所有有效的代码片段

jshell> /list1 : System.out.println("你好! wor1d");2 : int i =10;3 : public int add(int m,int n){return m + n;}4 : import java.util.*;
  • 查看当前 session 下所有创建过的变量

jshell> /var
|    int i = 10
  • 查看当前 session 下所有创建过的方法

jshell> /methods
|    int add(int,int)

Tips:我们还可以重新定义相同方法名和参数列表的方法,即对现有方法的修改(或覆盖)。

  • 使用外部代码编辑器来编写 Java 代码

从外部文件加载源代码【Happy.java】(txt编写,改后缀就行)

public void printSmile() {System.out.println("人活着嘛,开心最重要啦!");
}
printSmile();
  • 使用/open命令调用

jshell> /open D:\Happy.java
人活着嘛,开心最重要啦!
  • 退出jShell

jshell> /exit
|  再见

第18.6.1章 JDK9的新特性—Java的REPL工具: jShell命令相关推荐

  1. 第18章_MySQL8其它新特性(窗口函数、公用表表达式)

    第18章_MySQL8其它新特性 第18章_MySQL8其它新特性 1. MySQL8新特性概述 1.1 MySQL8.0 新增特性 1.2 MySQL8.0移除的旧特性 2. 新特性1:窗口函数 2 ...

  2. 【MySQL 第18章_MySQL8其它新特性】

    第18章_MySQL8其它新特性 1. MySQL8新特性概述 1.1 MySQL8.0 新增特性 1. 更简便的NoSQL支持 2.更好的索引 3. 更完善的JSON支持 4. 安全和账户管理 5. ...

  3. 第18章_MySQL8其它新特性

    第18章_MySQL8其它新特性 1. MySQL8新特性概述 MySQL从5.7版本直接跳跃发布了8.0版本,可见这是一个令人兴奋的里程碑版本.MySQL 8版本在功能上做了显著的改进与增强,开发者 ...

  4. Atitit swt 4.3 4.4 4.5 新特性java attilax总结

    Atitit swt 4.3 4.4 4.5 新特性java attilax总结 1.4.5 Release -June 3, 20151 1.1.Older Releases1 2.SWT 4.4. ...

  5. Jdk14 都要出了,Jdk9 的新特性还不了解一下?

    来源:未读代码 Java 新特性系列已经从 Java 7 开始补充到 Java 9 了,每一篇的反馈都还不错.这个系列会持续更新到 Java 13 版本,然后在每个 Java 新版本发布时同步更新这个 ...

  6. Android进阶之光读书笔记——第一章:Android新特性

    第一章 Android新特性 主要讲了一些Android 5.0.6.0.7.0新特性 1.1 Android 5.0新特性 Android 5.0 Lollipop是2014年10月发布的,那时候我 ...

  7. JDK9主要新特性介绍

    1.Java 9 REPL (JShell) - 交互式编程环境 JShell 是 Java 9 新增的一个交互式的编程环境工具,允许无需使用类或者方法包来执行 Java 语句,可以直接 输入表达式并 ...

  8. JDK8和JDK9【新特性】

    一.接口的新特性 概述 jdk8之前接口是规则的集合体,方法只有抽象方法. jdk8版本开始不仅有抽象方法同时增加了带实现的方法. 增加内容 jdk8: 默认方法 default            ...

  9. Java SE 6 新特性: Java DB 和 JDBC 4.0

    http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...

最新文章

  1. 【数据库】mysql 常用命令(一)
  2. Java并发学习二:编译优化带来的有序性问题导致的并发Bug
  3. 大连网络推广浅析网站如何实现加快收录的方法?
  4. java.lang.IllegalArgumentException: pointerIndex out of range
  5. 谈一谈我对前端的学习路线及方法的一些心得
  6. selenium webdriver python 元素操作
  7. Ubuntu配置maven
  8. Nancy之Cache的简单使用
  9. 生活中常见物联网实例_包邮赠书| 什么是物联网?常见IoT 物联网协议最全讲解...
  10. DEA博弈交叉效率matlab,基于博弈交叉效率DEA模型的服务模块化创新绩效测量—以江西省文化创意产业为例...
  11. python输出最大的素数_Python中的最大素数回文
  12. 永磁直流无刷电机设计之路(三)——电磁参数设计
  13. shell获取主机信息并根据定时任务发送邮件到手机
  14. 在日本做科研工作是怎样的体验?
  15. 我的编程之路(三) 蜗居
  16. mysql数据库在线测试_测试面试题集-MySQL数据库灵魂拷问
  17. 跟着b站大学学习C语言--哔哩大学计算机学院
  18. Html5弹幕视频播放器插件Danmu介绍
  19. dom绑定click事件无效及解决办法
  20. 美团点评2020校招笔试题1(栈,堆)

热门文章

  1. 2023年如何搭建最小可行性的产品文档/产品手册?
  2. RHEL6/7更新系统的CA
  3. HTTPError错误
  4. join()方法的使用
  5. 什么是ARPU与ARPPU ?
  6. 中国计算机艺术的发展趋势,浅谈数字媒体艺术的发展趋势
  7. MATLAB画三维动态魔方/旋转魔方/旋转立方体
  8. beforeSend 出现跨域问题,header里直接设置token就没问题----Day1
  9. http状态码301、302、303、307、308区别
  10. NLP之文本分类:「Tf-Idf、Word2Vec和BERT」三种模型比较