欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jdk9新特性学习

程序员文章站 2022-06-28 17:06:17
// 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,通过模块管理包,使得:

  1. 代码组织更安全:不同module之间无法直接访问,但可以通过导入新建module-info.java暴露出目标包
// java9demo1包对外暴露
module java9demo1 {
	export com.yyy.bean;
}
// java9demo2获取暴露文件
module java9demo2 {
	require java9demo1;
}
  1. 减少内存开销
  2. 可以适应不同设备

jshell

java缺少像Python一样交互式编程的环境,开发者只用输入一些代码就可以在编译前得到对程序的反馈。
路径:jdk9/bin/jshell.exe

  • 启动jshell:
    jdk9新特性学习从java9之后java也能通过命令行执行代码,可以不需要先创建文件再声明类提供方法运行文件等一系列的步骤。

  • jshell默认导入这些包文件:
    jdk9新特性学习

  • jshell定义并使用方法:
    jdk9新特性学习

  • jshell支持Tab自动补全:
    jdk9新特性学习

  • jshell其他功能举例:
    jdk9新特性学习/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

相关标签: java jdk