1. 局部变量类型推断
它允许你在不指定类型的情况下声明局部变量。类型是从表达式的右侧推断出来的。此功能也称为var
类型。
将前端思想 var 关键字引入 java 后段,自动检测所属于类型,一种情况除外,不能为 null,因为不能判断具体类型,会报异常。
/**
* 局部变量var
*/
public static void jdk10Var() {
var number = 10;
var str = "小飞博客";
var list = new ArrayList<>(1);
var map = new HashMap<>(1);
var set = new HashSet<>(1);
}
2.switch表达式
在 Java 14 中使用 switch 表达式时,你不必使用关键字break
来跳出 switch 语句或return
在每个 switch case 上使用关键字来返回值;相反,你可以返回整个 switch 表达式。这种增强的 switch 表达式使整体代码看起来更清晰,更易于阅读。
/**
* Switch优化
*/
public static void jdk13Switch() {
int k = 2;
String result = switch (k) {
case 1 -> "one";
case 2 -> "two";
default -> "many";
};
System.out.println(result);
}
3.文本块
文本块是 Java 15 中添加的一项新功能。它允许你在不使用转义序列的情况下创建多行字符串。这在你创建 SQL 查询或 JSON 字符串时非常有用。在下面的示例中,你可以看到使用文本块时代码看起来更加简洁。
/**
* 文本块升级
*/
public static void jdk13Text() {
// jdk13之前
String html1 = "<html>\n" +
" <body>\n" +
" <p>Hello, world</p>\n" +
" </body>\n" +
"</html>\n";
// jdk13之后
String html2 = """
<html>
<body>
<p>Hello, world</p>
</body>
</html>
""";
}
4.Records
记录Records是添加到 Java 14 的一项新功能。它允许你创建用于存储数据的类。它类似于 POJO 类,但代码少得多;大多数开发人员使用 Lombok 生成 POJO 类,但是有了记录,你就不需要使用任何第三方库。在下面的示例中,你可以看到创建记录类所需的代码非常少。
使用它可以替代构造器、equal 方法、toString 方法,hashCode 方法
public record Person(String name, int age) {}
5.模式匹配instanceof
模式匹配instanceof
是 Java 16 中添加的一项新功能。它允许你将instanceof
运算符用作返回已转换对象的表达式。当你使用嵌套的 if-else 语句时,这非常有用。在下面的示例中,你可以看到我们如何使用instanceof
运算符来捕获Employee
对象,而不是进行显式转换。
/**
* instanceof
*/
public static void jdk12Instanceofh() {
Object obj = "XiaoFei";
// jdk12之前
if (obj instanceof String) {
String s = (String) obj;
int length = s.length();
System.out.println(length);
}
// jdk12之后
if (obj instanceof String str) {
int length = str.length();
System.out.println(length);
}
}
6. 密封类
密封类是添加到 Java 17 中的一项新功能。它允许你将类或接口的继承限制为一组有限的子类。当你想将类或接口的继承限制为一组有限的子类时,这非常有用。在下面的示例中,你可以看到我们如何使用sealed
关键字将类的继承限制为一组有限的子类。
7. 有用的 NullPointerException
NullPointerExceptions 是 Java 14 中添加的一项新功能。它允许你获取有关NullPointerExceptions
. 这在调试时非常有用NullPointerExceptions
。在下面的示例中,你可以看到相同的代码如何NullPointerExceptions
在 Java 8 和 Java 14 中生成不同的结果,但在 Java 14 中,你可以获得有关异常的更多信息
其他新特性: