jdk9新特性学习(一)

// 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:
    在这里插入图片描述从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);
   	}
};

更简单的重写集合类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值