Java9新特性

目录结构

JDK8

在这里插入图片描述

JDK9
在这里插入图片描述

模块化系统

​ 本质上讲也就是说,用模块来管理各个package
​ 通过声明某个package 暴露,模块(module)的概念,其实就是package外再裹一层,不声明默认就是隐藏
​ 因此,模块化使得代码组织上更安全,因为它可以指定哪些部分可以暴露,哪些部分隐藏

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

jShell命令

​ jShell,让Java可以像脚本语言一样运行,从控制台启动jShell,利用jShell在没有创建类的情况下直接声明变量,计算表达式, 执行语句。
​ 即开发时可以在命令行里直接运行Java的代码,而无需创建Java文件,无需跟人解释”public static void main(String[] args)”这句废话。
在这里插入图片描述

语法改进

接口中的私有方法

​ Java 8中规定接口中的方法除了抽象方法之外,还可以定义静态方法和默认方法。一定程度上,扩展了接口的功能,此时的接口更像是一个抽象类。

​ 在Java 9中,接口更加的灵活和强大,连方法的访问权限修饰符都可以声明为private的了,此时方法将不会成为你对外暴露的API的一部分。

interface MyInterface {
	void normalInterfaceMethod();
	default void methodDefault1() {
		init();
	}
	public default void methodDefault2() {
		init();
	}
// This method is not part of the public API exposed by MyInterface
	private void init() {
		System.out.println("默认方法中的通用操作");
	}
}

class MyInterfaceImpl implements MyInterface {
	@Override
	public void normalInterfaceMethod() {
		System.out.println("实现接口的方法");
	}
}
public class MyInterfaceTest {
	public static void main(String[] args) {
		MyInterfaceImpl impl = new MyInterfaceImpl();
		impl.methodDefault1();
		// impl.init();//不能调用
	}
}

钻石操作符

在这里插入图片描述
在这里插入图片描述

try语句

在这里插入图片描述

String存储结构变更

​ String的底层从char型数组改成byte数组来存储

(用char型来存储每个字符使用两个字节来存,但我们所写的大部分字符都只占一个字节,因此浪费一个字节的空间)

(在String内部还添加了编码标识符,用于判断存储的是Latin-1还是UTF-16,前者只占一个字节,后者占两个字节,会动态判断)

快速创建只读集合

调用集合中静态方法 of( ),不管是哪个接口定义的都可以直接调用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WlNEKk4q-1629287424640)(C:\Users\acer\AppData\Roaming\Typora\typora-user-images\image-20210817204630045.png)]

​ 此时得到的集合,是不可变的:在创建后,继续添加元素到这些集合会导致 **“UnsupportedOperationException” **。

InputStream加强

transferTo,可以用来将数据直接传输到 OutputStream

在这里插入图片描述

新的StreamAPI方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值