Okapi Project

switch 文 (すうぃっちぶん)

バージョン
2003 年 06 月 30 日 Ver.1.1
作成者
K.Takimoto ( Xware )

目的

ある整数値によって 3 通り以上の別々の処理を実行したい!

switch 文ってなに?

Java の分岐ステートメントのひとつで、ある整数式の取りうる値により分岐が行われます。整数式の型は、char / byte / short / int です。

switch 文の説明

 switch( 整数式 ) {
      case 定数式1:
コードブロック1;
break;.
case 定数式2:
コードブロック2;
break;
default:
コードブロック;
}
整数式
分岐する条件となる整数式を記述します。
定数式
整数式がとり得る値のうち、コードブロックに書かれた処理を行う場合の定数(式)を記述します。

switch 文の動作は以下のようになります。

  1. 整数式を判定します。
  2. 整数式が定数式1に該当すれば、コードブロック1の処理を行います。
  3. コードブロック1の後には break 文があるので、コードブロック2を処理せず終了します。
  4. 整数式が定数式2に該当すれば、コードブロック2の処理を行います。
  5. コードブロック2の後には break 文があるので、コードブロックを処理せず終了します。
  6. 整数式が定数式1にも2にも該当しない場合は、コードブロックの処理を行います。

switch 文の使い方

1 〜 10 の数字を足す処理を考えてみましょう。

int judge = 1;
System.out.println("start");
switch (judge) { case 1:
System.out.println("judge は 1 です。"); break;
case 2:
System.out.println("judge は 2 です。"); break; default: System.out.println("judge は 1 でも 2 でもありません。");
}
System.out.println("end");

上記の処理結果は以下のようになります。

start
judge は 1 です。
end

では、break 文がないとどうなるでしょうか?

int judge = 1;
System.out.println("start");
switch (judge) { case 1:
System.out.println("judge は 1 です。"); case 2:
System.out.println("judge は 2 です。"); default: System.out.println("judge は 1 でも 2 でもありません。");
}
System.out.println("end");

上記の処理結果は以下のようになります。

start
judge は 1 です。
judge は 2 です。
judge は 1 でも 2 でもありません。
end

ポイント

ヒント

プログラムの見直し

switch 文を使ってプログラムを作る時は、作る前に一回プログラムを見直しましょう。
一般的に、switch 文が使われているプログラムは、良くないプログラム、わかりにくいプログラムの可能性が非常に高いと言われています。

性能の見直し

switch 文で作られたプログラムが、各条件で break 処理される場合は、分岐されやすい(条件に当てはまる確率が高い)条件順に並べた方が、性能が良くなります。

クラスファイルの容量見直し

一般的に、switch 文で作られたプログラムと、if 〜 else if 〜 else if ・・・で作るプログラムがコンパイル後のクラスファイルの容量は、3つ以内の場合 if 〜 else if 〜 else if ・・・で書いた方が、小さくなります。3つより大きい場合は、無制限にswitch 文を使えば良いのですが、3つの場合はソースが見やすい switch 文のほうを重視した方が良いと思います。容量にこだわる場合は、調整してみましょう。

関連


Copyright © 2003 - 2006 Okapi Project All Rights Reserved.