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つの変数 x と y を使用し、> オペレータを使って x が y より大きいかどうかをテストしています。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 になる(x も y も 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文の範囲外です!"); プロのアドバイス: 常に波括弧 { } を使用することで、コードがより明確になり、可読性が向上し、発見しにくいバグを防ぐことができます。