JavaA2Z

KAB-studio > プログラミング > JavaA2Z > switchステートメントとは

switchステートメント

日本語 切り替え命令
英語 switch statement
ふりがな すいっちすてーとめんと
フリガナ スイッチステートメント

解説

switchを使用した分岐文。
ステートメントの一種。
 
予約語switch」を用いたステートメント
ステートメントとしては「switch( 評価){}」という形式となる。
 
評価式にはbyteshortintcharの値のみ使用できる。変数定数かは問われない。
longboolean参照評価式に使用できない。

通常は評価式には「整数変数」を使用し、「switch( 整数変数 ){ case 定数: 処理 }」という形式で記述する。
整数変数」に格納された値と同じ「定数値」の直後の「処理」が実される。
 
この「case 定数:」は「switchラベル」と呼ばれ、ラベルの一種と見なされる。
また予約語default」も「default:」という形でラベルとして記述できる。
 
ブロック内では、breakステートメントを記述することができる。
ラベルを指定しないbreakでは、switchブロックの直後へと処理が移る。
ラベルを指定した場合には、そのラベルで指定したラベルステートメント(通常はブロック)の直後へと処理が移る。
 
ブロック内は通常のブロックと見なされるため、上記のswitchラベルbreak以外は他のブロックと同様の記述をうことができる。
 
switchステートメントの使用方法については以下の項目も参照のこと。
 
switch
case
default
break

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 最も単純なswitchステートメント。
        switch( 0 ){}

        // 評価式(上記の「0」の箇所)には、
        // byte、short、int、charの整数値型しか使用できません。
        // switch( "あいうえお" ){}
        // コンパイルエラー:
        // case 定数は String でなく char、byte、short、または int でなければなりません。

        // 実はlong型も使用できません。
        // switch( 0L ){}
        // コンパイルエラー:
        // case 定数は long でなく char、byte、short、または int でなければなりません。

        // boolean型も使用できません。
        // switch( true ){}
        // コンパイルエラー:
        // case 定数は boolean でなく char、byte、short、または int でなければなりません。

        // ブロックを他のステートメントに置き換えることは
        // できません。
        // switch( 0 ) int i = 0;
        // コンパイルエラー:
        // キーワード "int" に構文エラーがあります。正しくは "{" です。

        // 一般的なswitchステートメントは以下のようになります。
        int i = 1;
        switch( i )
        {
        case 0:    // このcaseを「switchラベル」と言います。この値が評価式と一致した箇所に移ります。
            System.out.println( "ぜろ" );
            break;    // breakでswitchの外に出ます。
        case 1:
            System.out.println( "いち" );
            break;
        case 2:
            System.out.println( "に" );
            break;
        default:
            System.out.println( "でふぉると" );
            break;
        }
        // いち

        // breakがないとそのまま次の行へと移ります。
        switch( 1 )
        {
        case 0:
            System.out.println( "ぜろ" );
            break;
        case 1:    // ここへ飛びます。
            System.out.println( "いち" );
            // break; // たとえばこれをコメントアウトすると、
        case 2:
            // ここまで通過します。
            System.out.println( "に" );
            break;
        default:
            System.out.println( "でふぉると" );
            break;
        }
        // いち
        // に

        // ラベルを用いたbreakステートメントを使用することができます。
        label_out:
        {
            // 100回ループ。
            forint iF1 = 0; iF1 < 100; ++iF1 )
            {
                switch( 1 )
                {
                case 0:
                    System.out.println( "ぜろ" );
                    break;
                case 1:    // ここへ飛びます。
                    System.out.println( "いち" );
                    break label_out; // label_outラベルを指定します。
                case 2:
                    // ここまで通過します。
                    System.out.println( "に" );
                    break;
                default:
                    System.out.println( "でふぉると" );
                    break;
                }
            }
        }
        System.out.println( "label_outラベルのブロックの直後。" );
        // いち
        // label_outラベルのブロックの直後。

        // このように、ラベル用いてブロックを指定して
        // breakすることもできます。
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 最も単純なswitchステートメント。
        switch( 0 ){}

        // 評価式(上記の「0」の箇所)には、
        // byte、short、int、charの整数値型しか使用できません。
        // switch( "あいうえお" ){}
        // コンパイルエラー:
        // case 定数は String でなく char、byte、short、または int でなければなりません。

        // 実はlong型も使用できません。
        // switch( 0L ){}
        // コンパイルエラー:
        // case 定数は long でなく char、byte、short、または int でなければなりません。

        // boolean型も使用できません。
        // switch( true ){}
        // コンパイルエラー:
        // case 定数は boolean でなく char、byte、short、または int でなければなりません。

        // ブロックを他のステートメントに置き換えることは
        // できません。
        // switch( 0 ) int i = 0;
        // コンパイルエラー:
        // キーワード "int" に構文エラーがあります。正しくは "{" です。

        // 一般的なswitchステートメントは以下のようになります。
        int i = 1;
        switch( i )
        {
        case 0:    // このcaseを「switchラベル」と言います。この値が評価式と一致した箇所に移ります。
            System.out.println( "ぜろ" );
            break;    // breakでswitchの外に出ます。
        case 1:
            System.out.println( "いち" );
            break;
        case 2:
            System.out.println( "に" );
            break;
        default:
            System.out.println( "でふぉると" );
            break;
        }
        // いち

        // breakがないとそのまま次の行へと移ります。
        switch( 1 )
        {
        case 0:
            System.out.println( "ぜろ" );
            break;
        case 1:    // ここへ飛びます。
            System.out.println( "いち" );
            // break; // たとえばこれをコメントアウトすると、
        case 2:
            // ここまで通過します。
            System.out.println( "に" );
            break;
        default:
            System.out.println( "でふぉると" );
            break;
        }
        // いち
        // に

        // ラベルを用いたbreakステートメントを使用することができます。
        label_out:
        {
            // 100回ループ。
            for( int iF1 = 0; iF1 < 100; ++iF1 )
            {
                switch( 1 )
                {
                case 0:
                    System.out.println( "ぜろ" );
                    break;
                case 1:    // ここへ飛びます。
                    System.out.println( "いち" );
                    break label_out; // label_outラベルを指定します。
                case 2:
                    // ここまで通過します。
                    System.out.println( "に" );
                    break;
                default:
                    System.out.println( "でふぉると" );
                    break;
                }
            }
        }
        System.out.println( "label_outラベルのブロックの直後。" );
        // いち
        // label_outラベルのブロックの直後。

        // このように、ラベル用いてブロックを指定して
        // breakすることもできます。
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2006/02/20
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。