📜  Java中的新运算符(1)

📅  最后修改于: 2023-12-03 15:02:02.485000             🧑  作者: Mango

Java中的新运算符

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) {
    // ...
}

如果 objnull,那么 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代码更加简洁、优雅。开发者可以根据自己的需要来选择使用哪些运算符。