Java 速習チュートリアル

Java のif文(条件分岐)

1. Javaの条件分岐とif文

条件分岐と if文 を使用することで、プログラムのフローを制御できます。どのコードを実行し、どのコードをスキップするかを決定できるのです。

これは現実世界でも同じです。「もし(If)雨が降ったら、傘を持っていく。そうでなければ、何もしない。」といった判断と同じロジックです。

すべての if ステートメントには、結果が true(真)または false(偽)になる「条件(コンディション)」が必要です。つまり、if 文は ブーリアン(boolean) 値と密接に関連しています。

1.1 if文の基本的なコード例

boolean isRaining = true;
if (isRaining) {
  System.out.println("傘を持ってきてください!");
}

多くの場合、条件は以下のような比較演算子を使用して作成されます。

  • より小さい(Less than): a < b
  • 以下(Less than or equal to): a <= b
  • より大きい(Greater than): a > b
  • 以上(Greater than or equal to): a >= b
  • 等しい(Equal to): a == b
  • 等しくない(Not equal to): a != b

これらの条件を使用して、異なる決定に対して異なるアクションを実行できます。Javaには以下の条件ステートメントが用意されています。

  • if:指定した条件が true の場合に実行されるコードブロックを指定する
  • else:同じ条件が false の場合に実行されるコードブロックを指定する
  • else if:最初の条件が false の場合にテストする新しい条件を指定する
  • switch:実行される多くの代替コードブロックを指定する

2. if ステートメント (The if Statement)

if ステートメントは、条件が true の場合に実行されるコードブロックを指定します。

2.1 構文 (Syntax)

if (条件) {
  // 条件が true の場合に実行されるコードブロック
}

if 文の中の「条件」は、ブーリアン値(x > y のようなブーリアン式、または isLightOn のようなブーリアン変数)を返すものでなければなりません。

また、if はすべて小文字で記述することに注意してください。大文字(If または IF)で記述するとエラーが発生します。

以下の例では、2つの値をテストして「20が18より大きいか」を確認しています。条件が true であれば、テキストを出力します。

2.2 数値の直接比較

if (20 > 18) {
  System.out.println("20は18より大きいです");
}

変数同士を比較することも可能です。

2.3 変数を用いた比較

int x = 20;
int y = 18;
if (x > y) {
  System.out.println("xはyより大きいです");
}

例の解説

上記の例では、2つの変数 xy を使用し、> オペレータを使って xy より大きいかどうかをテストしています。x は 20、y は 18 であり、20は18より大きいため、画面には "xはyより大きいです" と出力されます。

また、== オペレータを使用して、2つの値が等しいかどうかを確認することもよくあります。

2.4 等価性のチェック

int x = 20;
int y = 20;
if (x == y) {
  System.out.println("xはyと等しいです");
}

ここでは x == y という条件が true になる(xy も 20 であるため)ので、"xはyと等しいです" というメッセージが出力されます。

3. ブーリアン変数の利用

if 文では、ブーリアン変数を直接テストすることもできます。

3.1 ブーリアン変数の直接評価

boolean isLightOn = true;
if (isLightOn) {
  System.out.println("ライトは点灯しています。");
}

       注意:if (isLightOn) と書くことは if (isLightOn == true) と書くのと同じ意味ですが、より短く読みやすい形式です。

値が false の場合の例も見てみましょう。コードブロックが実行されなくても、プログラムが続行されることがわかります。

3.2 条件が false の場合の挙動

boolean isLightOn = false;
if (isLightOn) {
  System.out.println("ライトは点灯しています。");  // これは実行されません
}
System.out.println("この行はif文の外にあるため、結果に関わらず実行されます。");

4. 波括弧(中括弧)の省略

if ステートメント内のコードが1行だけの場合、波括弧 { } を省略して記述することができます。

4.1 波括弧を省略したコード例

if (20 > 18)
  System.out.println("20は18より大きいです");

4.2 潜在的な問題 (Potential Problem)

波括弧がない場合、if に属するのは直後の最初の1行だけになります。それ以降の行は条件に関わらず実行されてしまうため、予期しない結果を招く可能性があります。

int x = 20;
int y = 18;
if (x > y)
  System.out.println("xはyより大きいです");  // ifに属する
  System.out.println("この行は結果に関わらず常に実行されます(ifの一部ではないため)");

// 出力:
// xはyより大きいです
// この行は結果に関わらず常に実行されます(ifの一部ではないため)

4.3 安全な実装方法 (The Safe Way)

ミスを避けるために、常に波括弧 { } を使用することを強く推奨します。これにより、どの行が if ステートメントに属しているかが明確になります。

int x = 20;
int y = 18;
if (x > y) {
  System.out.println("xはyより大きいです");
  System.out.println("両方の行がif文の一部です");
}
// ifの外側のコード
System.out.println("私はif文の範囲外です!");

       プロのアドバイス: 常に波括弧 { } を使用することで、コードがより明確になり、可読性が向上し、発見しにくいバグを防ぐことができます。