Java 单行 if 语句

  1. Java 三元运算符
  2. Java8 中使用 filter 的单行 if-else 语句

Java 语言中有 52 个关键字或预定义词。我们称这些单词为保留字,因为它们在语言中具有某些特定的预定义含义。

在这组保留字中,if-else 是其中之一。我们使用此关键字指定任何条件。if-else 块的结构如下:

if (condition == true) {
    doThis;
} else {
    doSomethingElse;
}

我们可以在括号 () 中的条件中给出任何表达式。

如果 if 块中的表达式为真,则执行 doThis 语句。如果表达式的计算结果为 false,则应执行 doSomethingElse

如我们所见,执行一条简单的 if-else 类型的操作需要花费五行。这种评估的替代方法是使用三元运算符。

Java 三元运算符

三元运算符是 Java if-else 语句的简写形式。该运算符的语法定义如下。

condition ? expression1 : expression2 ;

在上面的语句中,首先评估 condition。如果 condition 评估为 true,则执行 expression1。如果 condition 评估为 false,则将执行 expression2

由于上述运算符采用三个操作数条件和两个表达式,因此称为三元运算符。

下面是示范程序的例子。

package ternaryOperator;

public class TernaryOperator {
    public static void main(String[] args) {
        int marks = 67;
        String distinction = marks > 70 ? "Yes" : "No";
        System.out.println("Has made a distinction : " +distinction);
    }
}

在上面的程序中,marks>70if 条件。?then 子句,而:else 的一部分。

程序应评估标记是否超过某个预定义的数字。由于条件 marks> 70 被评估为 false,因此 No 被打印在控制台输出上。

上面程序的输出如下。

Has made a distinction: No

Java8 中使用 filter 的单行 if-else 语句

Java 8 和更高版本具有流实用程序。在 Java 语言中,流 filter 方法采用 Predicate,其行为类似于 if-else

package streams;

import java.util.Arrays;
import java.util.List;

public class Java8Streams {
    public static void main(String[] args) {
        List<String> stringList = Arrays.asList("1", "2");
        stringList.stream()
                .filter(string -> string.equals("1"))
                .forEach(System.out::println);
    }
}

上面的程序使用 Arrays.asList() 方法实例化一个列表。在这里,我们给出了 1 和 2 作为字符串值。现在,我们使用 stream 函数创建了此列表的流。创建流后,将应用 filter 函数。此函数根据定义的条件过滤数据。-> 运算符称为 lambda 运算符。在 filter 函数中迭代流的每个值。如果满足条件,则该值将转到 forEach() 方法以执行最终操作。

由于未定义任何情况来处理其他情况,因此该值将被简单地绕过并将被丢弃。

上面程序的输出如下:

1