HOWTO · Java

Java の 1 行の if ステートメント

この記事では、Java の 1 行の if ステートメントを紹介します

このページの内容

Java 言語には 52 のキーワードまたは事前定義された単語があります。これらの単語は、言語で特定の事前定義された意味を持っているため、予約済みと呼びます。

この予約語のプールのうち、if-else はその 1つです。このキーワードを使用して、任意の条件を指定します。if-else ブロックの構造は次のようになります。

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

括弧 () 内にある条件で任意の式を与えることができます。

if ブロックの式の結果が true の場合、doThis ステートメントが実行されます。また、式が false と評価された場合は、doSomethingElse を実行する必要があります。

ご覧のとおり、単純な if-else タイプの操作を実行するには 5 行が必要です。このような種類の評価の代わりに、三項演算子を使用することもできます。

Java の三項演算子

三項演算子は、Java の if-else ステートメントの省略形です。この演算子の構文は次のように定義されています。

condition ? expression1 : expression2;

上記のステートメントでは、condition が最初に評価されます。condition が true と評価された場合、expression1 が実行されます。そして、condition が false と評価された場合、expression2 が実行されます。

上記の演算子は 3つのオペランド条件と 2つの式を取るため、三項演算子と呼ばれます。

以下は、同じことを示すためのサンプルプログラムです。

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>70 が if 条件です。? は then 節であり、: はその else 部分です。

プログラムは、マークが事前定義された数を超えているかどうかを評価する必要があります。marks > 70 の条件が false と評価されると、コンソール出力に No が出力されます。

上記のプログラムの出力は以下のとおりです。

Has made a distinction: No

Java 8 で filter を使用した 1 行の if-else ステートメント

Java 8 以降のバージョンには、ストリームのユーティリティがあります。ストリームの filter メソッドは Predicate を取り、Java 言語では if-else のように動作します。

package streams;

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

public class Java
8Streams {
  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() メソッドに送られ、最終的なアクションが実行されます。

else 条件を処理するように定義されたケースがないため、値は単にバイパスされ、ドロップされます。

そして、上記のプログラムの出力を以下に示します。

1