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>
获取帮助
![](https://i-blog.csdnimg.cn/blog_migrate/25d28330a5c9fec9d748713b672a7a89.png)
jshell> /help intro
基本使用
![](https://i-blog.csdnimg.cn/blog_migrate/f812a2bfdda116ba3198541ae08494af.png)
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 键,就能自动补全代码 (部分关键字)
![](https://i-blog.csdnimg.cn/blog_migrate/834447247530e45c6a28f22d8022248e.png)
列出当前 session 里所有有效的代码片段
jshell> /list
1 : 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 代码
![](https://i-blog.csdnimg.cn/blog_migrate/779b7789f9097fcaf0fab38b49a46393.png)
从外部文件加载源代码【Happy.java】(txt编写,改后缀就行)
public void printSmile() {
System.out.println("人活着嘛,开心最重要啦!");
}
printSmile();
使用/open命令调用
jshell> /open D:\Happy.java
人活着嘛,开心最重要啦!
退出jShell
jshell> /exit
| 再见