第4回では演算子についての学習をしました。今回は条件分岐(if文)について解説していきます。

条件分岐とは

条件式を評価した結果によって処理を分岐させる「条件分岐」を行う場合には、「if文」を使用します。

if文

  • if文の書式

if (条件式) {
  実行する文;
  …
}

if文では、条件式の結果がtrueだった場合、 { } のブロック内に記述された文を実行し、falseだった場合にはブロック内の処理は行わず、次の記述が処理されます。なお、条件式の結果がtrueで、実行文がひとつだけの場合、 { } を省略して、下記のように記述できます。

  • 実行文がひとつだけの場合の書式

if (条件式)
  実行する文;

「実行する文」の下に記述した処理は、ifブロック内のものとは判断されないので注意してください。

条件式の書き方

条件式は、「関係演算子」や「論理演算子」などを使って記述します。

関係演算子

条件を満たしているときに限り処理を実行したい場合や、条件が満たされている間は何度も同じ処理を繰り返したい場合などに、関係演算子を使用します。

  • 関係演算子の書式

左辺 関係演算子 右辺

Javaで使用できる関係演算子には次のものがあります。

  1. <

    a < b  → aはb未満

  2. <=

    a <= b  → aはb以下

  3. >

    a > b  → aはbより大きい

  4. >=

    a >= b  → aはb以上

  5. ==

    a == b  → aとbは等しい

  6. !=

    a != b  → aとbは等しくない

  7. instanceof

    a instanceof b  → aがbで指定されたクラスを継承しているか、インターフェイスを実装している(※instanceofに関しては今後の連載で解説します。)

論理演算子

論理演算子を使用すると、複数の条件式を組み合わせて複雑な条件式を記述することができます。なお、論理演算子を使用した場合でも、式全体の結果はboolean型のtrue(真)かfalse(偽)のどちらかになります。

Javaで使用できる論理演算子には次のものがあります。

  1. &&  :論理積

    a && b  → aとbがどちらもtrueのときにtrue

  2. ||  :論理和

    a || b  → aかbのどちらかひとつでもtrueの場合にtrue

  3. !  :論理否定

    !a  → aがtrueの場合にfalse、aがfalseの場合にtrue

論理演算子の判定される優先順位

&&演算子や||演算子では、最初に左辺から判定します。

  • &&演算子の場合

左辺 && 右辺

最初に左辺を判定し、左辺がfalseだった時点で式全体がfalseとなり、右辺の判定は行われません。左辺がtrueだった場合のみ、右辺の判定を行います。

  • ||演算子の場合

左辺 || 右辺

最初に左辺を判定し、左辺がtrueだった時点で全体がtrueとなり右辺の判定は行われません。左辺がfalseだった場合のみ、右辺の判定を行います。

  • !演算子の場合

!演算子はほかの演算子より優先順位が高いので注意してください。意図した部分を評価させるには、( ) を使用して式を指定します。

以上をもとに、以下のif文の例をみてみましょう。

int age = 25;

// 変数「age」の値が20以上だった場合
if (age >= 20){
  // 「成人しています」と表示する
  System.out.println("成人しています");
}

// 変数「age」の値が0未満または1000以上だった場合
if (age < 0 || age >= 1000){
  // 「年齢の値が不正です」と表示する
  System.out.println("年齢の値が不正です");
}

条件式がfalseの際に処理を行う

if文では、条件式がfalseだった際の処理も記述することができます。

  • 条件式がtrueの場合とfalseの場合、それぞれの書式

if (条件式){
  条件式がtrueの場合に実行する文;
  …
}else{
  条件式がfalseの場合に実行する文;
  …
}
  • 実行文がひとつだけの場合の書式

if (条件式)
  条件式がtrueの場合に実行する文;
else
  条件式がfalseの場合に実行する文;

条件式の結果がtrue/false、両方のケースを記述した例は下記のようになります。

int age = 25;

if (age >= 20){
  // 変数「age」の値が20以上だった場合
  System.out.println("成人しています");
} else {
  // 変数「age」の値が20未満だった場合
  System.out.println("未成年です");
}

複数の条件式を使用する

if文では、複数の条件式を使用して処理を分岐させることも可能です。

  • 複数の条件式を使用する書式

if (条件式1){
  条件式1がtrueの際に実行する文;
  …
} else if (条件式2) {
  条件式2がtrueの際に実行する文;
  …
} else if (条件式3) {
  条件式3がtrueの際に実行する文;
  …
} else { // このelseブロックは省略可能です
  すべての条件式(条件式1~3)がfalseの場合に実行する文;
  …
}

if文で複数の条件式がある場合、上から順番に評価されていきます。そして、条件式がtrueとなった時点でそのブロックの処理が実行され、if文が終了します。

では、複数の条件式を使用する処理の例をみてみましょう。

int age = 25;

if (age >= 20){
  // 変数「age」の値が20以上だった場合
  System.out.println("成人しています");
} else if (age >= 0){
  // 変数「age」の値が20未満で0以上だった場合
  System.out.println("未成年です");
} else {
  // 変数「age」の値が0未満だった場合
  System.out.println("年齢の値が不正です");
}

今回は条件分岐(if文)について解説しました。次回もJavaの基本構文について解説していく予定です。

執筆者紹介

八重桜雅子(YAEZAKURA Masako)

以前はシステム開発会社で約8年間働いていました。JavaやJavaScriptなどのWeb系の技術をよく使用していました。