概要
判定処理には、if / if-else / switch文があります。
これらはとても基本的な判定処理ですが、基本的な使い方に加えて、ちょっとした構文上のTipsや注意点についても解説していきます。
if文
基本構文
if文の基本構文です。
ifのカッコ内に判定する条件を記述し、一致する場合はカッコ内の処理が実行されます。
一致しない場合、カッコ内処理は行われません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/** * if構文 */ int age = 10; // if文 if(age == 10) { System.out.println("value is 10"); // 表示される } // if-else文 if(age == 20) { System.out.println("age is 20"); }else { System.out.println("age is not 20");// 表示される } // if-else if-else文 if(age == 20) { System.out.println("age is 20"); }else if(age == 10){ System.out.println("age is 10"); // 表示される }else { System.out.println("age is neither 10 nor 20"); } |
カッコの省略記法
if文のカッコを省略する記述方法です。
カッコ内の処理が1行だけの場合、カッコを省略することができます。
1 2 3 4 5 6 7 8 9 10 11 |
// if文(省略記法) if(false) System.out.println("true1"); // この1行だけ{}無しにできる System.out.println("true2"); // {}外扱いで表示される // if文(省略しなかった場合の書き換え) if(false) { System.out.println("true1"); } System.out.println("true2"); |
実際の開発現場ではカッコを省略できる場合でも、省略することはあまりありません。
理由は、パッと見でわかりずらいため、判断ミスにつながるからです。
これは私の考えですが、おそらくほとんどの会社のコーディング規約ではif文の省略は認めていないはずです。
実際、執筆時点(2021年5月20日)のGoogle Style(Googleのコーディング規約)でもカッコを使うようになっています。
Braces are used with if, else, for, do and while statements, even when the body is empty or contains only a single statement.
4.1.1 使えるところでは中括弧は使う
中括弧は if else for do while 文において本体が空でも1行しかなくても使われる。
言語特性としてそのように記述できるから使うのではなく、コードのメンテナンス性などを考慮したコーディングができることが求められているということだと思います。
elseを使わないでコーディングする
elseは無い方が簡潔で読みやすいコードになります。
もしあなたが初心者でelseを使わないことができない場合でも、将来はelseを使わないコードを書けるようになることを目指してみてください。
きっと、良いコードを書けるようになったことを嬉しく思えるようになるはずです。
elseを書かないようにする方法については以下を参照下さい。
switch文
基本構文
switch文はcase句に一致する値を入り口として、以降はbreakがあるまで全ての処理が実行されます。
以下の例だと、case句にbreakはセットになっているので、「case is 2」のみが表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// 基本構文 int branch = 2; switch(branch) { case 0: System.out.println("case is 0"); break; case 1: System.out.println("case is 1"); break; case 2: System.out.println("case is 2"); // この行が表示される break; case 3: System.out.println("case is 3"); break; default : System.out.println("default"); break; } |
breakが無い場合
「case 2」が入口になっているのは基本構文のケースと同じですが、breakが無いため処理が終了しません。
そのため、以降の「case 3」「default」まで実行されます。
1 2 3 4 5 6 7 8 9 |
// breakが無い場合 int otherBranch = 2; switch(otherBranch) { case 0: System.out.println("case is 0"); case 1: System.out.println("case is 1"); case 2: System.out.println("case is 2"); // この行が表示される case 3: System.out.println("case is 3"); // この行が表示される default : System.out.println("default");// この行が表示される } |
(注意)
switch文はあくまでcase句の入り口を判定するだけです。
if文のように処理される条件が指定できるわけではないので、該当のcase以外の処理を行わせたくない場合は、必ずbreakを入れるようにしましょう。
もしswitch文を書かなくていいなら、if文にしましょう。
brackを書き忘れるリスクを引き受けるより、if文で合致した条件のみを処理させる方が安全だからです。
コラム
実際、開発現場でswitch文を使うことはほぼ無いと思います。
私は使ったことがありません。
使うとすれば、if文を使うことになることがほとんどです。
ただし、Java Silverを受験するのであれば出題される可能性のある内容なので、理解しておくようにしましょう。
Java Silverを受験する場合は、徹底攻略Java SE 11 Silver問題集[1Z0-815]対応(通称:黒本)がおすすめです。
十分な練習問題と本番試験相当の総仕上げ問題が2回分あり、試験対策はこれだけで充分です。
まとめ
- if文は判定を行う。
- if文は1行のみであればカッコを省略できるが、推奨はされていない。
- elseを書かないコードは読みやすいので、できるようになることをお奨めする。
- switchは特定のcaseへの入り口を判定する。
- switchはbreakが無い場合、breakがあるまで後続のcaseを実行する。
そのため、途中で処理を終了させたい場合、必ずbreakを入れるようにする。
または、if文を使うようにする。
コメント