1-3-3:switch - case の条件分岐


・ Javaには if - else のパターンの条件分岐の他に、 switch - case のパターンによる条件分岐の記述方法があります。 この方法では、条件の判定のルール、ブロックの記述、いずれの面でも違いがあります。
まず判定の方法ですが、switch文の直後の ( )の中のデータの値で判定することは 同様ですが、その値は boolean型の値ではありません。数値もしくは文字コードの 型の式もしくは変数名を直接指定します。
switch - case では、処理の内容が記述されたブロックは1個しか存在しません。 その中に複数の処理が並べられます。 それぞれの処理の先頭には case文、その直後には、対応する値と記号 :(コロン) が書かれます。この値を頼りに該当する処理が記述された場所が選択されます。 該当する値があらかじめ用意された case文の値の中に見つからないこともあります。 その場合には switchのブロックの末尾で、 「その他の値の場合」を処理する default: という選択肢を指定することができます。


int x;
switch( x ) {

    case 1: 処理1;
    case 2: 処理2;
    case 3: 処理3;
    default: 処理4;
}

・ switchのブロックは単独の構造をしているので、該当するcase の場所に ジャンプするだけでは不十分です。処理の終わりの部分を明示する必要が あるのが普通です(そうしないと、ブロックの最後まで全部実行されてしまう)。
そのために用意されているのが break文です。 break文が呼び出されると、処理は強制的にブロックから抜けることになります。 このように case文と break文の位置関係によって、1つのブロックの中に複数 の処理を並べることができるわけです。


char c;
switch( c ) {

    case 'A':
    case 'a': 処理A;
              break;
    case 'B':
    case 'b': 処理B;
              break;
    case 'C':
    case 'c': 処理C;
              break;
    default: 処理D;
}