📅  最后修改于: 2023-12-03 15:02:02.485000             🧑  作者: Mango
Java中的新运算符可以让开发者在代码编写中更加便捷和高效。下面将介绍其中一些重要的新运算符。
var
运算符var
运算符是Java 10中新增的,可以用来声明局部变量。它的作用是让编译器根据右侧表达式的类型推断出变量的类型,从而简化了变量的声明过程。例如:
var list = new ArrayList<String>(); // 等价于 ArrayList<String> list = new ArrayList<>();
需要注意的是,var
不能用于方法参数、构造函数、instance变量和静态变量的声明。
instanceof
运算符的升级在Java 14中,instanceof
运算符进行了升级。原来的形式是
if (obj instanceof MyClass) {
// ...
}
现在可以写成
if (obj instanceof MyClass myObj) {
// ...
}
这样,在判断 obj
是否是 MyClass
的实例时,同时还将 obj
强制转换成了 MyClass
类型并赋值给了 myObj
变量。如果不是 MyClass
类型的实例,myObj
则为 null
。这个新的形式称为 "pattern matching for instanceof"。
在旧版本的Java中,我们经常需要用繁琐的判断语句来确定某个引用是不是 null
,比如:
if (obj != null && obj.getName() != null) {
// ...
}
在Java 11中,新增了一种空安全运算符 ?.
,可以让代码更加简洁,避免了繁琐的 null
判断。例如:
if (obj?.getName() != null) {
// ...
}
如果 obj
是 null
,那么 obj?.getName()
的结果就是 null
,不会产生 NullPointerException
。
switch
表达式在Java 14中,switch
语句进行了升级,可以作为表达式使用。在使用时,需要保证每一个 branch 都会返回一个值,用 yield
关键字标记。例如:
String day = switch (num) {
case 1 -> "Monday";
case 2 -> "Tuesday";
case 3 -> "Wednesday";
case 4 -> "Thursday";
case 5 -> "Friday";
default -> {
System.out.println("Invalid number");
yield "Weekend";
}
};
这里的 switch
语句根据变量 num
的值返回对应的星期几字符串,如果 num
不是1-5,则输出一个错误信息,并返回字符串 "Weekend"。可以看到,这个新的 switch
表达式使得代码更加简洁清晰。
除了上述几种运算符外,Java中还有许多其他的新运算符,如 ::
运算符、record
运算符等等。这些新运算符可以让Java代码更加简洁、优雅。开发者可以根据自己的需要来选择使用哪些运算符。