Javaのif分は条件によって処理を分岐する制御構文です。この記事では、if文の使い方をサンプルを交えてご紹介します。
if文に指定した条件を満たしたときに、後続のステートメントを実行する。
public double divide(double x, double y) {
if (y == 0)
throw IllegalArgumentException;
return x / y;
}
ブロックを使って、複数のステートメントを実行することもできる。
public double divide(double x, double y) {
if (y == 0) {
System.err.println("Illegal argument");
throw IllegalArgumentException;
}
return x / y;
}
Javaのif文において、条件を満たさなかったときの処理を記述するには、else句を使用する。
public double divide(double x, double y) {
if (y != 0)
return x / y;
else
throw IllegalArgumentException;
}
ブロックを使って、複数のステートメントを実行することもできる。
public double divide(double x, double y) {
if (y != 0)
return x / y;
else {
System.err.println("Illegal argument");
throw IllegalArgumentException;
}
}
値を比較するには、次に示す比較演算子を使う。
==
int x = 0;
if (x == 0)
!=
int x = 1;
if (x != 0)
<
int x = -1;
if (x < 0)
<=
int x = 0;
if (x <= 0)
>
int x = 1;
if (x > 0)
>=
int x = 0;
if (x >= 0)
instanceof class
String x = new String();
if (x instanceof String)
条件式には次に示す論理演算子を使うことができる。
&&
前後の評価式が共に真の場合に真となる。
int x = 0, y = 0;
if (x == 0 && y == 0)
||
前後の評価式のうちいずれか片方でも真の場合に真となる。
int x = 1, y = 0;
if (x == 0 || y == 0)
!
後の評価式が偽の場合に真となる。
boolean x = false;
if (!x)
Javaのif文でnullチェックを行うには、比較演算子を使う。
String x = null;
if (x == null)
System.out.println("x is null");
if (x != null)
System.out.println("x is not null");
比較演算子の代わりに、Objects.isNull
および Objects.nonNull
静的メソッドを使うこともできる。staticメソッドであるため、Objects
クラスのインスタンスを作成せずに使うことができる。
String x = null;
if (Objects.isNull(x))
System.out.println("x is null");
if (Objects.nonNull(x))
System.out.println("x is not null");
Javaのif文に複数の条件を指定した場合、左から順番に評価される。
順番に評価していく過程において、条件の成立または不成立が確定した時点で評価を止め、以降の条件は評価しない。
String s = null;
if (s != null && s.length() > 0) {
System.out.println(s);
}
論理積は2つの条件のうちどちらかがfalseであれば、全体としてfalseになる。
「s != null
」がfalseと評価されると、条件の不成立が確定するため、「s.length() > 0
」は評価されない。
したがって、次のようにわざわざif文を入れ子にする必要はない。
String s = null;
if (s != null) {
// nullではないことを確認してからメソッドを呼ぶ
if (s.length() > 0) {
System.out.println(s);
}
}
条件によって評価する値を変えるには、三項演算子を使えば、if文を省略できる。
例えば、次のif文があったとする。
if (y != 0)
a = x / y;
else
a = 0;
これは、次のようにすることができる。
a = (y != 0) ? x / y : 0;