Java - switch文

2010年06月01日
switch文は多分岐に処理を行う文です。
if文で書く処理をswitch文で書いた方が、スマートになる場合などがあります。

基本的なswitch文の書き方
int i = 3;
switch(i) {
    case 1:
        System.out.print("1");
    case 2:
        System.out.print("2");
    case 3:
        System.out.print("3");
}
**出力結果で3が出力されます。
**switch()の引数の値と、case 値:と同じ値があるかを探します。一致した場所がある場合はそのcaseの中を実行します。

注1:switch()の引数の値は、かっこ内で宣言してはいけません。
        × switch(int i = 2){} ○ switch(++i){} ○ switch(i + 2){}

注2:switch()の引数の値は、byte,short,char,int,enum(JDK5から)以外使用不可。
        × double d = 10.0; switch(d){}

注3:重複するcase 値:があってはいけません。
switch文の特徴 break;
int i = 1;
switch(i) {
    case 1:
        System.out.print("1");
    case 2:
        System.out.print("2");
    case 3:
        System.out.print("3");
}
**この場合case 1:が実行された後、残りのcase 2、case 3も実行するという性質があります。よってこの場合の出力結果は123になります。

**一致した場所などでswitch文を強制的に終了させたい場合に、break;というのがあります。
int i = 1;
switch(i) {
    case 1:
        System.out.print("1");
        break;
    case 2:
        System.out.print("2");
        break;
    case 3:
        System.out.print("3");
        break;
}
**break;を置くことにより、出力結果は1だけとなります。
**もしcase 1のbreak;をなくし、実行を行うと出力結果は12になります。
switch文の特徴 default:
**switch()の値とcaseの値が何も一致しなかった場合に、caseの代わりにdefault:を入れておくと、default:の中が実行されます。
int i = 1;
switch(i) {
    case 2:
        System.out.print("2");
    case 3:
        System.out.print("3");
    default:
        System.out.print("default");
}
**この場合出力結果はdefaultのみになります。

**またdefaultの位置は末尾である必要はありません。
int i = 1;
switch(i) {
    case 2:
        System.out.print("2");
    default:
        System.out.print("default");
    case 3:
        System.out.print("3");
}
**この場合の出力結果はdefault3と出力されます。defaultの中にbreak;を記述することも可能であり、記述した場合はdefaultだけが出力され、処理を終えます。
JDK5からのenumを使ってのswitch文
class EnumSwitch {
    enum Color {RED, BLUE, BLACK};
    public static void main (String[] args) {
        Color clr = Color.RED;
        switch(clr) {
            case RED:
                System.out.print("RED");
                break;
            default:
                System.out.print("default");
                break;
            case BLUE:
                System.out.print("BLUE");
        }
    }
}
**出力結果はREDになります。

注1:enumで定義していないものをcaseに書くとエラーになります。
class EnumSwitch {
    enum Color {RED, BLUE, BLACK};
    public static void main (String[] args) {
        Color clr = Color.RED;
        switch(clr) {
            case RED:
                System.out.print("RED");
                break;
            default:
                System.out.print("default");
                break;
            //case WHITE: *コンパイルエラー
                System.out.print("WHITE");
        }
    }
}
pageTop
>