switch文はif文に比べて使われる機会は少ないです。
しかしswitch文にもif文には負けていない点があるということを再確認したので、今回記事として残しておきます。
是非今回の記事を読んで、switch文も捨てたもんじゃないなと思って下さる人がいればうれしいです。
一応下記記事でswitch文を簡単にご紹介いたしましたので、そちらも合わせてご覧ください。
【Java】条件分岐を詳しく解説 | エンジニアKISARAGIの備忘録 (kisaragi-it.com)
switch文で文字列の使用
まずswitch文では文字列を使用することも可能です。
以前解説した条件分岐での記事では数値による分岐を解説しましたが、今回は文字列解説していきます。
では早速使用例、実行結果を記載していきます。
【使用方法】
public class ex {
public static void main(String[] args){
String name="KISARAGI";
switch(name) {
case "YOSHIDA":
System.out.println("私の名前はYOSHIDAです!!");
break;
case "TAKAHASHI":
System.out.println("私の名前はTAKAHASHIです!!");
break;
case "KISARAGI":
System.out.println("私の名前はKISARAGIです!!");
break;
default:
System.out.println("私の名前は・・・内緒ですw");
}
}
}
【実行結果】
私の名前はKISARAGIです!!
このように文字列を使用した条件分岐も可能です。
今回はローマ字で記載いたしましたが、漢字でも可能ですので是非試してみてください。
前回の記事でも書きましたが、break文の有無には気を付けるようにしてください。
switch文で複数選択の方法
switch文はif文と同じように複数の選択肢を与えることも可能です。
if文での複数条件指定方法は下記記事で紹介しているので、ぜひ一度読んでみてください。
【Java】if文での条件分岐を徹底解説 | エンジニアKISARAGIの備忘録 (kisaragi-it.com)
switch文の場合if文よりも記載方法は楽になるといってもいいです。
if文は論理演算子を使用する必要がありましたが、switch文は今まで通りcase文を記載していくつかのbreak文を削除するだけで大丈夫です。
具体的な使用方法とその実行結果は下記の通りとなります。
【使用方法】
public class ex2 {
public static void main(String[] args){
int count = 3;
switch (count) {
case 2:
case 24:
System.out.println("私は月に2冊の本を読もうと思います。");
System.out.println("年間に換算すると24冊にもなります。");
break;
case 3:
case 36:
System.out.println("私は月に3冊の本を読もうと思います。");
System.out.println("年間に換算すると36冊にもなります。");
break;
case 4:
case 48:
System.out.println("私は月に4冊の本を読もうと思います。");
System.out.println("年間に換算すると48冊にもなります。");
break;
default:
System.out.println("私は月に"+count+"冊の本を読もうと思います。");
System.out.println("年間に換算すると"+(count*12)+"冊にもなります。");
}
}
}
【実行結果】
私は月に3冊の本を読もうと思います。
年間に換算すると36冊にもなります。
上記でif文でいうところの「a || b」を表すことができます。
見ていただいたら分かる通り記載量が増えるということはなく、むしろ減っているのでかなり使い勝手はいいものとなっています。
ただ慣れないうちは少し使いにくいかもしれませんが、何度も使用しているうちにそういったこともなくなってきます。
ぜひ覚えてどんどん使用していってください。
switch文で気を付ける点
最後に開設するのはswitch文で気を付ける点です。
まず下記のコードを見てください。
public class ex3 {
public static void main(String[] args){
int a=3;
int b=3;
switch(a) {
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
break;
case b:
System.out.println(3);
break;
}
}
}
このコードの結果はどうなると思いますか?
結果はエラーとなります。
原因は3つ目のcaseに使用しているbが定数でない点です。
caseに指定するのは定数でないとダメという決まりがあります。
そのため「int b=3」を「final int b=3」と変更することでエラーが表示されなくなります。
そしてもう一点気を気を付けることは下記のように型が異なるものを使用しないということです。
public class ex4 {
public static void main(String[] args){
String a="3";
final int b=3;
switch(a) {
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
break;
case b:
System.out.println(3);
break;
}
}
}
aはString型ですが、caseで使用されているのはどれも数値型です。
そのためエラーとなってしまいます。
と言ってもこれはswitch文だけでなく、if文などでも気を付ける必要がありますが・・・
このように気を付ける点はいくつかありますが、そこまで難しい制約ではないのでそういったものがあるということだけ記憶しておいたらいいと思います。
まとめ
本記事ではswitch文について下記項目で解説してきました。
- switch文で文字列の使用
- switch文で複数選択の方法
- switch文で気を付ける点
if文に比べて使う機会は少ないと思いますが、性能としてはswitch文もif文に負けていないと考えています。
使用場所によってはif文よりもきれいにコードを掛ける時もあると思いますので、覚えておいて損はないと思います。
以上で今回の解説は終了となります。
コメント