case
日本語 | 場合 |
英語 | case |
ふりがな | けーす |
フリガナ | ケース |
switchの「飛び先」を指定する予約語。
switchブロック内でのみ記述できる予約語。
「case 定数値:」という形式で記述する。
「switch( 整数型変数 ){ case 定数値: 処理 }」という形式で、「整数型変数」に格納された値と同じ「定数値」の直後の「処理」が実行される。
通常は「switch( 整数型変数 ){ case 定数値1: 処理1 case 定数値2: 処理2 case 定数値3: 処理3 default: デフォルト処理 }」のように複数のcaseと「定数値」を用意することで、「整数型変数」に格納された値によって処理1~3のうちのどれかを処理させる。
caseは「ラベル」の一種で、「switchラベル」と呼ばれる。
処理が移動するための単なる「印」であり、ブロックやステートメントを必要としない。
ifステートメントと異なり「switchからcaseへと飛ぶ」だけで、「case内のブロックが処理される」といったことはない。
そのため、caseに飛んだ後はそのままごく普通に処理が流れる事になり、そのあとに他のcaseがある場合、それらも処理してしまう。
そのため、通常はcaseで飛んだ後の処理の最後にbreakでswitchから抜けるようにする。
逆にこの性質を利用して、複数の条件で共通の処理を行うこともできる。
switchブロック内でのみ記述できる予約語。
「case 定数値:」という形式で記述する。
「switch( 整数型変数 ){ case 定数値: 処理 }」という形式で、「整数型変数」に格納された値と同じ「定数値」の直後の「処理」が実行される。
通常は「switch( 整数型変数 ){ case 定数値1: 処理1 case 定数値2: 処理2 case 定数値3: 処理3 default: デフォルト処理 }」のように複数のcaseと「定数値」を用意することで、「整数型変数」に格納された値によって処理1~3のうちのどれかを処理させる。
caseは「ラベル」の一種で、「switchラベル」と呼ばれる。
処理が移動するための単なる「印」であり、ブロックやステートメントを必要としない。
ifステートメントと異なり「switchからcaseへと飛ぶ」だけで、「case内のブロックが処理される」といったことはない。
そのため、caseに飛んだ後はそのままごく普通に処理が流れる事になり、そのあとに他のcaseがある場合、それらも処理してしまう。
そのため、通常はcaseで飛んだ後の処理の最後にbreakでswitchから抜けるようにする。
逆にこの性質を利用して、複数の条件で共通の処理を行うこともできる。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// 一般的なswitchステートメントは以下のようになります。
int i = 1;
// ↓このiの中身をチェックします。
switch( i )
{
case 0: // 「case」の後の値と「i」が一致した箇所に移ります。
System.out.println( "ぜろ" );
break;
case 1: // ですので、この例ではここに移ります。
System.out.println( "いち" );
// いち
break; // breakでswitchの外に出ます。
case 2:
// 直前で、breakで抜けているのでここには来ません。
System.out.println( "に" );
break;
default:
System.out.println( "でふぉると" );
break;
}
// breakでここに抜けます。
// breakで止めないとこんなことになります。
switch( 0 )
{
case 0:
System.out.println( "ぜろ" );
case 1:
System.out.println( "いち" );
case 2:
System.out.println( "に" );
default:
System.out.println( "でふぉると" );
}
// ぜろ
// いち
// に
// でふぉると
// つまりcase 0:に飛んだ後、そのままcase 1:以降も処理されたわけです。
// 代わりに、ひとつの処理を複数のcaseで共有することもできます。
// breakで止めないとこんなことになります。
switch( 0 )
{
case 0:
case 1:
case 2:
System.out.println( "ぜろ~に" );
}
// ぜろ~に
// この場合、0 1 2どれでも同じ処理が行われます。
// caseには定数値、つまり整数リテラルしか使用できません。
switch( 0 )
{
// case i:
// case 式は定数式でなければなりません。
}
// caseはswitchブロックの外では記述できません。
// case 0:
// コンパイルエラー:
// キーワード "case" に構文エラーがあります。正しくは "}" です。
}
}
public class Sample
{
public static void main( String[] args )
{
// 一般的なswitchステートメントは以下のようになります。
int i = 1;
// ↓このiの中身をチェックします。
switch( i )
{
case 0: // 「case」の後の値と「i」が一致した箇所に移ります。
System.out.println( "ぜろ" );
break;
case 1: // ですので、この例ではここに移ります。
System.out.println( "いち" );
// いち
break; // breakでswitchの外に出ます。
case 2:
// 直前で、breakで抜けているのでここには来ません。
System.out.println( "に" );
break;
default:
System.out.println( "でふぉると" );
break;
}
// breakでここに抜けます。
// breakで止めないとこんなことになります。
switch( 0 )
{
case 0:
System.out.println( "ぜろ" );
case 1:
System.out.println( "いち" );
case 2:
System.out.println( "に" );
default:
System.out.println( "でふぉると" );
}
// ぜろ
// いち
// に
// でふぉると
// つまりcase 0:に飛んだ後、そのままcase 1:以降も処理されたわけです。
// 代わりに、ひとつの処理を複数のcaseで共有することもできます。
// breakで止めないとこんなことになります。
switch( 0 )
{
case 0:
case 1:
case 2:
System.out.println( "ぜろ~に" );
}
// ぜろ~に
// この場合、0 1 2どれでも同じ処理が行われます。
// caseには定数値、つまり整数リテラルしか使用できません。
switch( 0 )
{
// case i:
// case 式は定数式でなければなりません。
}
// caseはswitchブロックの外では記述できません。
// case 0:
// コンパイルエラー:
// キーワード "case" に構文エラーがあります。正しくは "}" です。
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // 一般的なswitchステートメントは以下のようになります。 int i = 1; // ↓このiの中身をチェックします。 switch( i ) { case 0: // 「case」の後の値と「i」が一致した箇所に移ります。 System.out.println( "ぜろ" ); break; case 1: // ですので、この例ではここに移ります。 System.out.println( "いち" ); // いち break; // breakでswitchの外に出ます。 case 2: // 直前で、breakで抜けているのでここには来ません。 System.out.println( "に" ); break; default: System.out.println( "でふぉると" ); break; } // breakでここに抜けます。 // breakで止めないとこんなことになります。 switch( 0 ) { case 0: System.out.println( "ぜろ" ); case 1: System.out.println( "いち" ); case 2: System.out.println( "に" ); default: System.out.println( "でふぉると" ); } // ぜろ // いち // に // でふぉると // つまりcase 0:に飛んだ後、そのままcase 1:以降も処理されたわけです。 // 代わりに、ひとつの処理を複数のcaseで共有することもできます。 // breakで止めないとこんなことになります。 switch( 0 ) { case 0: case 1: case 2: System.out.println( "ぜろ~に" ); } // ぜろ~に // この場合、0 1 2どれでも同じ処理が行われます。 // caseには定数値、つまり整数リテラルしか使用できません。 switch( 0 ) { // case i: // case 式は定数式でなければなりません。 } // caseはswitchブロックの外では記述できません。 // case 0: // コンパイルエラー: // キーワード "case" に構文エラーがあります。正しくは "}" です。 } }