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