Java if文の使い方

Javaのif分は条件によって処理を分岐する制御構文です。この記事では、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;
}

else

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)

論理演算子

条件式には次に示す論理演算子を使うことができる。

&&
論理積(AND)

前後の評価式が共に真の場合に真となる。

int x = 0, y = 0;
if (x == 0 && y == 0)
||
論理和(OR)

前後の評価式のうちいずれか片方でも真の場合に真となる。

int x = 1, y = 0;
if (x == 0 || y == 0)
!
否定(NOT)

後の評価式が偽の場合に真となる。

boolean x = false;
if (!x)

nullチェック

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文があったとする。

if (y != 0)
  a = x / y;
else
  a = 0;

これは、次のようにすることができる。

a = (y != 0) ? x / y : 0;