条件分岐はif文だけにあらず!Switchを使い倒す。
  • facebookページ
  • twitterページ
  • 2019.09.10

    条件分岐はif文だけにあらず!Switchを使い倒す。

    プログラミングを覚えて間もない頃、条件分岐をif文だけに頼ってほぼすべてのプログラミングをif文で作ろうとした記憶ありませんか?それでも出来ないことは無いので個人で使う分には問題無いかもしれません。でもコードの量が増えるにつれ、修正などでそのコードを後に見直す必要が出てきた場合にすごく見難いというか「なにこれ、誰がこんなの作ったの…」となってしまいます。これを俗にスパゲッティコードと呼びますが、こういった緊急事態に陥らないように最初のうちにもう一つの条件分岐も覚えておきましょう。因みにswitch文は人によってswitch-case文という人もいますが言い方が違うだけで中身は一緒です。

    基本的な記述ルール

    switch文の構文は次のように記述します。

    条件には基となる式を入れます。”case”にはマッチする条件を記述します。条件の終わりには”:”を記述し忘れないように注意してください。

    式が一致した時の処理を記述し終えたら最後に”break;”を記述し次のcaseに移行します。
    ここで注目してもらいたいのは”default”にはbreakが無いことです。プログラミングの基本的な流れとして上から下の行へ順番にコードを処理するというルールがありますが(カプセル化などをしていない場合の基本的な処理順)、switch文にも当然そのルールは適用されますのでcaseには必ずbreakが必要となります。しかしdefaultはswitch文の最後の行に当たる為breakを付ける必要がありません。

    またcaseについては次のように記述することも出来ます。

    このようにcaseをまとめて記述することも出来ます。

    実際に記述してみる

    次のコードを見てください。

     

    実行結果

    これはint型の変数を宣言しswitch文で分岐処理をする単純なコードであり、実行結果は「2です。」となります。先ほどbreakについての注意を書きましたが、次のコードでは上のコードからbreakを取ってみます。

     

    実行結果

    このように、breakを取り外すと最初に実行されたcaseより下にある条件が全て無評価で実行されてしまいます。

    ポテパンダの一言メモ

    条件に使用できる型には制限があり、その制限は次の通りとなります。
    byte型、short型、int型、char型、String型(Java7から)、enum型

    続いてエラーについてご説明します。
    次のコードを見てください。

    このコードを実行するとコンパイルエラーとなります。これは式と値の型が一致していない為です。このほかにも式または値に”null”がある場合、実行時エラー(NullPointerException)となります。では次にもう一つ見てみましょう。

    switch文ではcaseに重複する値がある場合コンパイルエラーが発生します。よって上のコードの実行結果はエラーとなります。

    if文との大きな違いとしてこれらの仕様が挙げられます。条件分岐を重ねていくと人的ミスでエラーが起きやすくなりますが、このようにswitch文を使い分けることで、人的ミスが起こりにくいコードを記述することができるのはswitch文のメリットと言えるでしょう。

    便利な使い方

    Javaもいよいよ12が実装されましたが、このJava12の実装によりswitch文にも新たな機能が実装されました。
    ここではその新機能についてご紹介します。

    複数case

    次のコードを見てください。

    Java12の実装により、caseに複数の値をセットすることが可能となりました。
    以前のVer.でこれを実行すると「multiple case labels are a preview feature and are disabled by default.」となりコンパイルエラーとなっていたので、非常に便利な機能です。

    アロー構文

    “->”の記号(アロー記号)を利用できるようになりました。この記号を利用することでcaseの後に付くコロンとbreakを省略することが出来るようになります。
    記述方法としては以下の通りとなります。

    またブロックを使うことで複数行に渡り処理を行うことも可能です。
    記述方法は以下の通りです。

    まとめ

    今回はswitch文について説明しました。
    条件分岐という基本的なものにはなりましたが、if文とswitch文の使い分けが明確に分からない方のお役に立てればと思います。

    switch文を使うことで、非常にすっきりしたコード作りが出来るようになりますし、何より人的ミスを減らすことにも繋がりますので仕事で複数の開発者がいる場合などには出来る限りスパゲッティコードは避けなくてはなりません。そのためにも基本であるが故に確実にマスターしておきたいものでもあります。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE

    ポテパンおすすめ案件