🥶

【Java】分岐構文の種類(if/switch)

2023/12/21に公開

Javaの初歩的なif文とswitch文の書き方や特徴をメモしていきます。

3種類のif構文

Javaのif文には3つのバリエーションがあり、それぞれ条件式の評価結果がfalseになった場合の流れが異なります。


if-else

こちらは基本形となります。条件が真の場合はifブロックが実行され、偽の場合はelseブロックが実行されます。

  if (条件式) {
       実行するコード1;
   } else {
       実行するコード2;
   }

例えば、下記のコードは変数xの値が5以上の場合、"xは5以上です"と表示し、それ以外の場合は"xは5未満です"と表示します。

   int x = 3;
   if (x >= 5) {
       System.out.println("xは5以上です");
   } else {
       System.out.println("xは5未満です");
   }

ifのみ

もし条件が満たされなかった場合は何もしないといった条件式の評価結果がfalseのときは何もしないという場合はelseを省略できます。

   if (条件式) {
       実行するコード;
   }

例えば、下記のコードは変数xの値が5以上の場合、"xは5以上です"と表示します。

   int x = 6;
   if (x >= 5) {
       System.out.println("xは5以上です");
   }

if-else if-else

if-else if-else構文は、他と異なり、1つのif文で3つ以上のルートに分岐できる特徴があります。そして複数の条件を評価し、最初に一致した条件のブロックが実行されます。

   if (条件式1) {
       実行するコード1;
   } else if (条件式2) {
       実行するコード2;
   } else {
       実行するコード3;
   }

例えば、下記のコードは変数xの値が5以上の場合、"xは5以上です"と表示し、変数xの値が3以上の場合、"xは3以上です"と表示します。それ以外の場合は、"xは3未満です"と表示します。

   int x = 4;
   if (x >= 5) {
       System.out.println("xは5以上です");
   } else if (x >= 3) {
       System.out.println("xは3以上です");
   } else {
       System.out.println("xは3未満です");
   }
if-else if-else構文のルール
  1. else ifブロックは複数記述できるが、ifブロックより後ろ、elseブロックより前にだけ記述できる。
  2. 最後のelseブロックは、中身が空ならばelseごと省略が可能。

switch構文

if-else if-else構文で同じ変数を繰り返し比較し、かつ次の2つの条件を満たす場合にswitch文に書き換えることができます。

switch文に書き換えることができる条件
  1. すべての条件式が==で左辺と右辺が一致するかを比較する式になっており、それ以外の>、<、!=などが使われていない。
  2. 比較する対象が整数(byte型、short型、int型のいずれか)、文字列(String型)または文字(char型)であり、小数や真偽値ではない。

基本的な書き方

switch (変数) {
    case1:
        実行するコード1;
        break;
    case2:
        実行するコード2;
        break;
    case3:
        実行するコード3;
        break;
    default:
        実行するコード4;
        break;
}

解説

  • 変数: 条件式が評価される変数や式を指定します。
  • 値1、値2、値3: 変数の値がこれらの値と一致する場合、対応するコードが実行されます。値は整数、文字列、列挙型などを使用できます。
  • 実行するコード1、実行するコード2、実行するコード3: 各値に対応する実行するコードを記述します。コードブロック内で複数の文を記述することも可能です。
  • default
    条件に一致するcase文がない場合に実行されるデフォルトのコードブロックを指定します。defaultは省略可能ですが、指定されていない場合、条件に一致するcaseがない場合には何も実行されません。
  • break
    各caseブロックの最後にbreak文を記述することで、該当するcaseブロックを終了します。breakがないと、他のcaseブロックも実行されてしまいます。

スッキリわかるJava入門第4版 参照

Discussion