jdk9新特性学习
程序员文章站
2022-03-26 17:17:30
// jdk8 --> jdk9目录结构的变化jdk9中不再有jre文件夹,而是将jre中的文件放至根目录中模块化系统jdk8中JVM在运行时必须要加载rt.jar文件,使得java运行环境臃肿。模块化根据不同模块加载程序运行需要的class,本质上是在package外再加一层module,通过模块管理包,使得:代码组织更安全:不同module之间无法直接访问,但可以通过导入新建module-info.java暴露出目标包// java9demo1包对外暴露module java9...
// jdk8 --> jdk9
目录结构的变化
jdk9中不再有jre文件夹,而是将jre中的文件放至根目录中
模块化系统
jdk8中JVM在运行时必须要加载rt.jar文件,使得java运行环境臃肿。
模块化根据不同模块加载程序运行需要的class,本质上是在package外再加一层module,通过模块管理包,使得:
- 代码组织更安全:不同module之间无法直接访问,但可以通过导入新建module-info.java暴露出目标包
// java9demo1包对外暴露
module java9demo1 {
export com.yyy.bean;
}
// java9demo2获取暴露文件
module java9demo2 {
require java9demo1;
}
- 减少内存开销
- 可以适应不同设备
jshell
java缺少像Python一样交互式编程的环境,开发者只用输入一些代码就可以在编译前得到对程序的反馈。
路径:jdk9/bin/jshell.exe
-
启动jshell:
从java9之后java也能通过命令行执行代码,可以不需要先创建文件再声明类提供方法运行文件等一系列的步骤。 -
jshell默认导入这些包文件:
-
jshell定义并使用方法:
-
jshell支持Tab自动补全:
-
jshell其他功能举例:
/list可以显示历史代码 /edit可以在编辑器中编辑定义的函数
多版本兼容jar包
jdk版本提升,但任要向后兼容旧版本的jdk,导致java臃肿。
jar包提供多版本特性,比如当环境为jdk9时优先使用jdk9对应的类文件。
接口定义私有方法
举例:
interface MyInterface {
// jdk8接口中可以声明全局常量、抽象方法、静态方法、默认方法
void method1();
static void method2() { System.out.println("2"); }
default void method3() {
System.out.println("3");
method4();
}
// jdk9中可以声明私有方法
private void method4() { System.out.println("4"); }
}
钻石操作符升级
范型那对尖括号叫钻石操作符 !!!∑(゚Д゚ノ)ノ
允许匿名子类和钻石操作符(diamond operator)连用:
// 第二个钻石操作符在jdk8中可以通过类型推断获得,故可以省略
// 创建一个继承ArrayList的匿名子类对象
List<String> list = new ArrayList<>(){
@Override
public String put(String var1, String var2) {
var1="key_value";
var2="重写后的值";
return super.put(var1, var2);
}
};
更简单的重写集合类
本文地址:https://blog.csdn.net/weixin_44796147/article/details/109275315
推荐阅读
-
HTML5新特性 多线程(Worker SharedWorker)
-
ECMAScript6 新特性范例大全
-
ThinkPHP3.1新特性之多层MVC的支持
-
servlet3新特性_动力节点Java学院整理
-
Visual Studio 2017 针对移动开发的新特性汇总
-
Kotlin学习第一步 kotlin语法特性
-
ES6数组新特性解析(map,filter,forEach,reduce)
-
SQL Server2012在开发中的一些新特性
-
win10 Build 10130 Edge浏览器新特性:支持视频全屏播放
-
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)