Java - switch文
2010年06月01日
switch文は多分岐に処理を行う文です。
if文で書く処理をswitch文で書いた方が、スマートになる場合などがあります。
基本的な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");
}
}
}

















