switch について:簡単に説明すると
switch とは、Java の
キーワード
の一つであり、
フロー制御
を行うために使用されます。
switch について:もっと詳しく
switch 文の一般的な書式は以下の通りです。
switch( 式 ){
case 定数:
処理文;
break;
case 定数:
処理文;
break;
default:
処理文;
break;
}
switch の引数となる式は、最終的に int 型の値になるものである必要があります。
( byte 、 short 、 char 型も自動的に int 型に
拡大変換
されるので、 switch の引数とすることができます。)
式の値が case の引数の値と一致すれば、その直後の処理分が実行され、 break に到達した
時点で switch 文を終了します。
言葉では分かりにくいので、実際のコードで見てみましょう。
class Test{
public static void main( String args[] ){
int a = 2;
switch( a ){
case 1:
System.out.println( "a は1です。" );
break;
case 2:
System.out.println( "a は2です。" );
break;
default:
System.out.println( "a は1でも2でもない。" );
break;
}
}
}
> javac Test.java
> java Test
a は2です。
この例では、 switch の引数である a が 2 であるため、「 case 2: 」の直後の処理
(緑の文字の部分)が実行されています。
その後、「 break; 」に達して switch 文を抜け出しています。
ちなみに、どの
case
にも一致しない場合、
default
の直後の処理が実行されます。
確認してみましょう。
class Test{
public static void main( String args[] ){
int a = 5;
switch( a ){
case 1:
System.out.println( "a は1です。" );
break;
case 2:
System.out.println( "a は2です。" );
break;
default:
System.out.println( "a は1でも2でもない。" );
break;
}
}
}
> javac Test.java
> java Test
a は1でも2でもない。
switch の引数である a には 5 が格納されているため、「 case 1: 」にも「 case 2: 」にも
該当しません。
そのため、 default の直後の処理(緑の文字の部分)が実行されています。
default
を記述していない場合、どの
case
にも一致しなければ、何も処理されること無く switch 文は終了します。
これは自分で確認してみて下さいね。
続いて、似た構文を使える if 文と比較してみましょう。
class Test{
public static void main( String args[] ){
int a = 1;
System.out.println( "switch 文を開始します。" );
switch( a ){
case 1:
System.out.println( "a は1です。" );
break;
case 2:
System.out.println( "a は2です。" );
break;
default:
System.out.println( "a は1でも2でもない。" );
break;
}
//下記の if 文は上記の switch 文と全く同じ処理になります。
System.out.println( "if 文を開始します。" );
if( a == 1 ){
System.out.println( "a は1です。" );
}else if( a == 2 ){
System.out.println( "a は2です。" );
}else{
System.out.println( "a は1でも2でもない。" );
}
}
}
> javac Test.java
> java Test
switch 文を開始します。
a は1です。
if 文を開始します。
a は1です。
このように、 switch 文は
if
文に完全に置き換えることができます。
ただし、 if 文から switch 文へは置き換えることができない場合もあります。
if は引数が boolean 型として評価される式ですが、switch は引数が int 型として評価される式であるため、
使用できる場合が少し限定されます。
その他にも if 文と異なる点があります。
それは break を記述しない場合の動作です。
switch 文で
break
を記述しなくても、コンパイルエラーにはなりません。
break がない場合、条件に合致したあとの全てのコードが実行されることになります。
//break をコメントアウトしています。
class Test{
public static void main( String args[] ){
int a = 2;
switch( a ){
case 1:
System.out.println( "a は1です。" );
//break;
case 2:
System.out.println( "a は2です。" );
//break;
default:
System.out.println( "a は1でも2でもない。" );
//break;
}
}
}
>javac Test.java
>java Test
a は2です。
a は1でも2でもない。
「 case 2: 」で条件が合致してから、それ以降の全てのコードが実行されている様子が分かりますね。
この break 書き忘れは結構やりがちですが、コンパイラがエラーにしてくれないので十分注意しましょう。
関連項目:
case
default
break
|
SJC-P対策問題集
Java認定試験( SJC-P/310-035 )対策のメルマガ問題集も好評発刊中!
もちろん無料です。
またバックナンバーも見やすくしてオンライン問題集として随時アップしていきます。
受験しない人でも Java の基礎知識を学習するのに最適です。
SJC-P対策参考書
現在、Java認定試験(SJC-P/310-035)対策の参考書は本当にたくさん出版されてます。
ここでは、その中から厳選した本当に役立つ参考書を紹介します。
無駄な出費を抑えるためにも、ぜひ参考にして下さい。
SJC-P対策Java用語集
Java認定試験( SJC-P/310-035 )合格のために必要な Java の用語を集めました。
試験対策にはもちろん、試験以外で Java を学習する際にもご活用下さい。
更新履歴
このサイトの最新情報はここで確認できます。
また、今までこのサイトがどのような軌跡を辿ってきたのかも知ることができます。
Javaを始める人へ
これからJavaを始めようとしているあなたへ。
Javaの勉強を始めるにはどうしたら良いのかを説明しています。
また、初心者に役立つ情報を提供していきます。
Java認定資格の概要
Java認定資格にはどのようなものがあるのか。
資格取得のためにはどのような知識が必要なのか。
その他、資格を取得することのメリットなど、Java認定資格の概要を説明します。
LINK
Javaの勉強に役立つリンク。
その他のプログラミングに関するリンク。
ソフトウェアに関するリンクなど、管理人の主観で集めたリンク集です。
相互リンクも常時募集中!
詳細は以下のページで確認して下さい。
このサイトについて
このサイト「1発合格★Java認定試験!」についての説明です。
サイトで掲載しているソースコードや問題や免責事項などについて説明しています。
初めての人は一度のぞいてみて下さい。
ちょっとひと息
仕事や試験勉強に疲れたら、ここでちょっと一息つきませんか。
一生懸命に打ち込むのも良いけど、たまには何も考えずにゆっくり休むのも良いものです。
たまにはのんびり脳みそをリフレッシュしましょう。
|