【Javaプログラミング超入門 #12】条件分岐(3):switch

 

みのる
こんにちは。笑顔で感謝!✨ みのるコーチです。
今回も、ご覧いただき、ありがとうございます。

今回は

Java超入門 #12
条件分岐(3):switch

というテーマでお送りします。

条件分岐については、if 文をお話してきましたが
今回は switch 文についてお伝えしますね。

彩香
条件分岐の新たな方法ですね。
今回も よろしくお願いします。
剛留
新技をゲットできますね。
今回も、全集中でいきます~。よろしくお願いします。
みのる
それでは 早速 いってみましょう。

【Youtube版】

Youtubeでもお伝えしていますので
是非チェックしてくださいね。

【1】switch 文

① switch 文 とは

switch 文 とは
✅ 与えられた「式」の評価結果によって
  処理を分岐させたい場合に使用する。

✅ 式に一致する「値」を順に指定して
  指定した値の後の処理を実行する。

② 分岐のイメージ

フローチャートを見ておきましょう。

前の処理からは、順次で進んできます。

「式」の部分に比較対象となる式を書きます。
変数を指定する場合が多いです。

そして、任意の数の分岐を書いて
一致する時の「値」と「処理」を書きます。

式が「値1」と一致した場合「処理1」を実行します。

式が「値2」と一致した場合「処理2」を実行します。

式が「値3」と一致した場合「処理3」を実行します。

そして、どれとも一致しない場合「その他の処理」を実行します。

最後に、分岐した全ての線は、元の1本に合流します。

1本の線で入ってきて、1本の線で抜けていく
という書き方、if 構文のパターンと同じです。

例えば、ある変数 div の値を見て。

1 だったら、開始処理を行って…

2 だったら、メイン処理を行う…

3 だったら、終了処理を行う。

そして、その他だったら エラー処理を行う。

…といった事を行いたい場合です。

③ java の書き方

Javaでの書き方を 見ていきましょう。

switch (式) {
    case 値1:
        処理1
        break;
    case 値2:
        処理2
        break;
    case 値3:
        処理3
        break;
    default:
        その他の処理
}

予約後 switch の後に ()丸括弧を書いて
この中に比較対象の式を書きます。

その後に
switch 全体のブロックを記述します。

そして、一致した値とその時の処理を順に記述します。

まず 予約後 case を書いた後に 値を指定して
その後に :(コロン)を書きます。

;(セミコロン)ではありません。

case の行は、ステートメントではなく
「ラベル」というもので「標識」のようなものです。

「一致する値を示していますよ」という
「標識」のようなものと考えて頂いて…

この場合には :(コロン)をつけると理解しましょう。

そしてその後に、処理を記述していきますが
ここは ステートメントを複数 書く事ができます。

処理の終わりには break; を記述します。
ここで、switch 文から抜けるという意味です。

switch 文の場合には、式と同じ値 を見つけたら
その後は 順にステートメントを実行 していきます。

したがって、break; を書かないと、次の値の処理も
続けて実行してしまう事に なるのです。

ですので、ある値の処理の区切りとして break; を
記述すること 覚えておきましょうね。

同様に、値・処理・break を必要数分 記述します。

この場合、式が 値2と一致する場合に
処理2を実行して break 。

値3と一致する場合に、処理3を実行して break です。

そして、default: の記述です。

どの case にも一致しなかった場合に
その他の処理を 実行する事になります。

フローチャートとの対応も 見ておきましょう。

左側がフローチャートで、右側が Java の switch 文です。

対象となる式が、switch の ()丸括弧内に書く式です。

一致する値は case の後に書いて :(コロン)

処理は、caseラベルの次の行から複数記述可能です。

この後に、java プログラムでは break; が必要です。

同様に、caseラベル・処理・break のセットを
必要数分 指定します。

そして、その他を表すキーワードは default: です。
この後に、その他の処理を記述することになります。

この、イメージを持ってプログラミングしましょうね。

彩香
値が一致するかを順に調べる時には switch文が 良いのですね。

確かに、プログラムの見通しが良くなるように思います。
ノートに書いておきます。

剛留
switch 文は、用途は限定的ですが、使える時には
積極的に使っていこうと思います。

プログラムが、スッキリしそうですから…。

【2】ポイント

switch 文のポイントを見ていきましょう。

① 式に書ける型

比較対象になる式は

結果が以下のいずれかになる式に限定されます。

・ byte
・ char
・ short
・ int
・ String

このうち、int または String が良く使われます。

② case に書く値

case の後に記述できるのは 定数式 です。

定数式は、コンパイル時に 値が確定 するものです。
主に、リテラル と 定数 が使われます。

注意点は「変数は指定できない」ということです。

・ 定数式を書ける。
・ リテラルと定数が主。
・ 変数は指定できない。

頭の片隅に入れておきましょう。

③ 一致する場合のみ

switch 文で処理できるのは
式とcaseで指定した値が一致する場合のみです。

< 、> などの関係は表現できません。
このような場合には、if 文を使って
処理することとなります。

この意味で、if文のほうが利用範囲は
広いと言えます。

switch が処理できるのは
✅ 式とある値が一致する場合のみ。 

✅ < 、> などの関係は表現できない。
  このような場合には、if 文を使う。

④ default:は省略できる

case で指定した 値 にはいずれも合致しない
という場合は、default: の後の処理を実行しますが

この「その他の場合の処理」は何もしない場合には
default 自体を省略することができます。

その他の処理が不要の場合

default: は省略できる。

彩香
文字列の比較も サクッとやってくれるので
if 文で書くより スッキリと書けそうですね。

また1つ、良いことを知った気がします。

剛留
便利な方法を勉強できました。
着々と、前進しています!

【まとめ】

【1】switch 文
・ 与えられた「式」の評価結果によって
  処理を分岐させたい場合に使用する。

・ 式に一致する「値」を順に指定して
  指定した値の後の処理を実行する。

【2】ポイント
① 式に書ける型

・ byte
・ char
・ short
・ int
・ String

② case に書く値

・定数式を書ける。
・リテラルと定数が主。
・変数は指定できない。

③ 一致する場合のみ

switch が処理できるのは

・式と値が一致する場合のみ
・< 、> などの関係は表現できない。
 このような場合には、if 文を使う。

④ defaultは省略できる

・ その他の処理が不要の場合
  default:  は省略できる。