java15有什么新特性
时间: 2024-01-21 22:02:12 浏览: 41
Java 15 于2020年9月发布,提供了以下新特性:
1. Sealed Classes:这是一种新的类和接口修饰符,可以限制类的继承层次结构。
2. Hidden Classes:这是一种新的类,它可以在类加载器中隐藏,不会暴露给应用程序。
3. Records:这是一种新的类声明,可以更轻松地定义数据类。
4. Text Blocks:这是一种新的字符串文本格式,可以更轻松地创建多行字符串。
5. ZGC:这是一种新的垃圾收集器,适用于需要大量内存的应用程序。
6. Shenandoah GC 的改进:这是另一种垃圾收集器,现在可以在 macOS 和 Windows 上使用。
7. Unix-Domain Socket Channel:这是一个新的通道类型,可以在本地计算机上进行进程间通信。
8. Foreign-Memory Access API:这是一种新的 API,可以在 Java 中直接访问本地内存,以提高性能。
这些新特性使得 Java 15 成为了一个更加强大和灵活的编程语言。
相关问题
java15比java14多了什么新特性
Java 15相比Java 14新增了一些新特性,以下是其中几个:
1. 隐藏类
Java 15中,引入了隐藏类(Hidden Classes)的概念,可以在不暴露类名的情况下创建类并实例化对象。这可以提高安全性并减少命名冲突。下面是一个例子:
```java
class MyRunnable implements Runnable {
public void run() {
System.out.println("Hello, World!");
}
}
public class Main {
public static void main(String[] args) throws Exception {
var myRunnableClass = Class.forName("MyRunnable");
var myRunnableConstructor = myRunnableClass.getDeclaredConstructor();
myRunnableConstructor.setAccessible(true);
var myRunnable = (Runnable) myRunnableConstructor.newInstance();
myRunnable.run();
}
}
```
2. Records的增强
Java 15中,对Records进行了增强,支持使用“with”方法来创建新的对象,以及支持使用“equals”和“hashCode”方法进行比较。下面是一个例子:
```java
public record Person(String name, int age) {
public Person {
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
}
public Person withName(String name) {
return new Person(name, age);
}
}
Person p1 = new Person("John", 30);
Person p2 = p1.withName("Jane");
System.out.println(p1.equals(p2)); // 输出 "false"
```
3. Text Blocks的增强
Java 15中,对Text Blocks进行了增强,支持使用“\”来转义换行符、支持使用嵌入式表达式以及支持使用“stripIndent”方法去除首尾空白符。下面是一个例子:
```java
String html = """
<html>
<head>
<title>%s</title>
</head>
<body>
<h1>%s</h1>
<p>%s</p>
</body>
</html>
""".formatted("Hello, World!", "Hello, World!", "Lorem ipsum");
System.out.println(html.stripIndent());
```
以上就是Java 15的一些新特性。
Java8到Java17的新特性
Java 8、9、10、11、12、13、14、15、16、17的新特性如下:
Java 8:
- Lambda表达式
- Stream API
- 接口默认方法
- 方法引用
- 新的日期和时间API
- Optional类
- Nashorn JavaScript引擎
- PermGen空间被移除
- 函数式接口
- CompletableFuture类
Java 9:
- 模块化系统
- JShell交互式编程工具
- 私有接口方法
- 集合工厂方法
- HTTP/2标准支持
- 改进的try-with-resources
- 改进的钻石操作符
- 改进的Stream API
- 改进的Optional类
Java 10:
- 局部变量类型推断
- 应用程序类数据共享
- G1垃圾收集器的并行全垃圾回收
- 改进的Optional类
- 新的Time-Based版本的Stream操作
- 针对容器的并行全垃圾回收
Java 11:
- HTTP客户端API
- 支持Unicode 10.0
- 局部变量语法扩展
- Epsilon GC:一种实验性垃圾收集器
- ZGC:一种实验性垃圾收集器
- Flight Recorder:一种事件流记录器
- 在字符串中添加新的实用方法
Java 12:
- switch语句表达式
- 改进的字符串操作
- 新的垃圾收集器(Shenandoah)
Java 13:
- Text Blocks
- 改进的Switch语句
Java 14:
- Records
- Switch表达式增强
- G1垃圾收集器改进
- 垃圾收集器ZGC和Shenandoah的改进
Java 15:
- Sealed Classes
- Pattern Matching for instanceof
- Records增强
- ZGC垃圾收集器增强
Java 16:
- Records增强
- instanceof模式匹配增强
- Vector API:一种实验性API,用于执行SIMD(单指令多数据)计算
- JEP 390:向macOS上的Aarch64添加支持
Java 17:
- 垃圾收集器ZGC的增强
- Sealed Classes和Pattern Matching for instanceof增强
- Switch语句增强
- 改进的弱密钥算法
- 静态嵌套类和匿名类可以实现接口
- 弃用Applet API
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)