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
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn