LoginSignup
1
0

More than 1 year has passed since last update.

switch文利用の注意点について(忘れないように)

Last updated at Posted at 2022-09-13

本日実務で久しぶりにswitch文を実装する機会があったので、
Java silverにて学んだことをもう1度おさらいで備忘録として残そうかと思います。

Switch文利用の注意点

注意点は3つです。
基本的には、統合開発環境(eclipseなど)が赤線で教えてくれますが、
最初から知っていれば無駄な修正時間も省けます。

①:case文の処理後は、break or returnを忘れない

String status = "open";
int i = 0;
switch (status) {
  case "open":
    i++;
  case "close":
    i++;
    break;//ここまで処理が実行されてしまう
}

これは統合環境(eclipseなど)でも赤線を引っ張られないので、記載漏れがあった場合、
テスト時に気づく必要があります。

case文に該当すれば、その中の処理が実施されますが、breakもしくはreturnをしないと次のcase文まで実行してしまいます。

②:case文で指定する値は定数でなければならない


public class A {

  String status;

  public void setStatus(String sts) {
    this.status = sts;
  }

  public static void main(String[] args) {
    int i = 0;
    switch (status) {//statusが変数はエラー
      case "open":
        i++;
      case "close":
        i++;
        break;
    }
  }
}

上記のコードで言えば、変数宣言時のstatusをstaticに変更する必要があります。

③:default文は必ず実行されるものではないが、書き順が大事

switch文1行目のdefault文は、必ず実行されてしまいます。

String status = "open";
int i = 0;
switch (status) {
  default://必ず実行されてしまう
    i++;
    break;
  case "open":
    i++;
    break;
  case "close":
    i++;
    break;
}

逆に最後に持ってくると、どのcaseにも該当しなかった場合に必ず実行される処理になる。

String status = "open";
int i = 0;
switch (status) {
  case "open":
    i++;
    break;
  case "close":
    i++;
    break;
  default://どのcaseにも該当しなかった場合にのみ実行
    i++;
    break;
}

終わりに

switch文は実務では利用することも少なく、見る機会も少ないです。
結局if文の方が便利で慣れ親しんでいるからでしょうか。

ですが、switch文を利用した方が見やすくなる時もあります。
覚えておいて損はないし、これからも使えそうであれば使っていこうと思います。
Enumとの相性が良いのかなと個人的には思いました。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0