Chapter 08

Java 条件分岐

おでん
おでん
2021.08.05に更新

条件分岐

一般的な条件分岐で代表的なものは以下の3つです。

  1. if文
  2. 条件演算子
  3. switch文

1. if文

「if文」は以下のように記述します。

if( 論理値1 ) {
   処理1;
} 
else if( 論理値2 ) {
   処理2;
} 
else {
   処理3;
}

もし、論理値1がtrueであれば処理1を実行し、
論理値1がfalseで、かつ、論理値2がtrueであれば処理2を実行し、
どれでもない場合は処理3を実行する。
という記述の意味になります。

int var1 = 5;
int var2 = 10;
if (var1 > var2){
   System.out.println(var1 + "は" + var2 + "よりも大きい");
}
else if (var1 < var2){
   System.out.println(var1 + "は" + var2 + "よりも小さい");
}
else {
   System.out.println(var1 + "は" + var2 + "と等しい");
}
結果
5は10よりも小さい

2. 条件演算子

条件演算子は、「if文」を1行で簡略化したものです。
論理値がtrueであれば値1を、falseであれば値2を返します。
また、値1と値2のデータ型は一致していなければなりません。
以下のように記述します。

論理値 ? 値1 : 値2;
int val1 = 10;
int val2 = 20;
System.out.println(val1 > val2 ? "正" : "偽");
結果

3. switch文

多くの場合で「if文」が使用されますが、条件分岐が多い場合には記述が読みづらくなってしまいます。
そのような時に使用される条件分岐文が「switch文」です。
「switch文」の特徴として、等価比較(==,!=)のみ判断基準となる点です。
「switch文」は以下のように記述します。

switch(式) {
  case 値1:
    // 式=値1の時に実行される処理
    break;
  case 値2:
    // 式=値2の時に実行される処理
    break;
  ...
  ...
  default:
    // 上記のどれにも一致しない時の処理
    break;
}

式がcaseの値と一致した際に、その後の処理を行います。
注意点としては、それぞれの処理後に「break文」(後述)を記述することです。
「break文」を記述しないと、式がcaseの値と一致した際の処理のその後の処理も全て行なってしまいます。
その場合の事例が、以下の例2になります。

例1
int var = 3;
switch(var) {
  case 1:
    System.out.println(1);
    break;
  case 2:
    System.out.println(2);
    break;
  case 3:
    System.out.println(3);
    break;
  default:
    System.out.println("no");
    break;
}
結果
3
例2(break文をあえて記述しない場合)
int var = 2;
switch(var) {
  case 1:
    System.out.println(1);
  case 2:
    System.out.println(2);
  case 3:
    System.out.println(3);
  default:
    System.out.println("no");
}
結果
2
3
no

case2と一致した処理で「2」が出力された後、その後のcaseやdefaultが全て通って実行されてしまっていることが分かります。