【Java】switchのdefaultについて解説

Javaではswitch文でdefaultを使うとどのような処理が行われるのか解説していきます。

サンプルプログラム

以下サンプルプログラムです。

class SwitchDefault {
	public static void main(String[] args) {
		int num = 3;

		switch (num) {
			case 1:
				System.out.println("numは1です。");
				break;
			case 2:
				System.out.println("numは2です。");
				break;
			default:
				System.out.println("いずれのcaseも当てはまらなかった場合、defaultに書かれた処理が実行されます。");
		}

	}
}

実行結果は以下の通りになります。

$ java SwitchDefault
いずれのcaseも当てはまらなかった場合、defaultに書かれた処理が実行されます。

defaultを使うとswitch内のcaseの全てに当てはまらなかった場合に実行されます。今回の例でいくとnumの値が3であるためswitch文の中のcase1とcase2のいずれも当てはまらなかったからです。

caseの全てに当てはまらなかった場合と書きましたが、実際にはそうでない場合があります。フォールスルーというやつです。

 



フォールスルーについて

これはdefaultに限らずJavaでswitchを使うときの注意点になりますが、Javaにはフォールスルーというものが存在します。先ほどのコードのnumの値を2に変更して、実行してみます。

int num = 2;

実行結果は当然「numは2です。」と出力されます。

しかし、case 2のbreakをなくすと実行結果が以下のように変わります。

$ java SwitchDefault
numは2です。
いずれのcaseも当てはまらなかった場合、defaultに書かれた処理が実行されます。

このようにJavaではbreak文を書かないことで該当するcase以下の処理が全て実行されることになります。これをあえて利用する場合もあれば、breakの書き忘れでバグになることもあります。この点を注意してswitchを使うことが重要になります。

まとめ

Javaにおいてswitch文でdefaultを使うことで全てのcaseに当てはまらなかったときの処理を記述することができます。しかしbreakを書き忘れるとフォールスルーによって当てはまった場合でもdefault内の処理が実行されてしまうので注意が必要です。

コメント

タイトルとURLをコピーしました