処理を分岐する – if命令
if(condition) {
statements
} else if(condition2) {
statements
}
…
else {
statements
}
condition、condition2…:条件式
statements:条件に合致した時に実行される命令文
if命令は、与えられた条件の真偽に応じて実行する命令を分岐します。直訳するならば、「もし~ならば…」という構造を表します。たとえば以下は、変数valが10であれば「変数valは10です」というメッセージを表示するサンプルです。
StatIf.java
- package com.example.mynavi.control;
- public class StatIf {
- public static void main(String[] args) {
- var val = 10;
- if (val == 10) {
- System.out.println("変数valは10です");
- } // 結果:変数valは10です
- }
- }
「もし~ならば…さもなくば…」を表現したいならば、else句を利用します。
StatIf2.java
- package com.example.mynavi.control;
- public class StatIf2 {
- public static void main(String[] args) {
- var val = 11;
- if (val == 10) {
- System.out.println("変数valは10です");
- } else {
- System.out.println("変数valは10ではありません");
- } // 結果:変数valは10ではありません
- }
- }
更に、「もし~ならば…、~ならば…、さもなくば…」のように複数分岐を表したいならば、else if句を利用します。else if句は、必要な数だけ繰り返し書いて構いません。
StatIf3.java
- package com.example.mynavi.control;
- public class StatIf3 {
- public static void main(String[] args) {
- var val = 11;
- if (val == 10) {
- System.out.println("変数valは10です");
- } else if (val == 20) {
- System.out.println("変数valは20です");
- } else {
- System.out.println("変数valは10でも20でもありません");
- } // 結果:変数valは10でも20でもありません
- }
- }
ブロックの省略
ブロックの中のコードが1文である場合には、「{…}」を省略することも可能です。よって、StatIf3.javaは以下のように書いても同じ意味です。
- var val = 11;
- if (val == 10)
- System.out.println("変数valは10です");
- else if (val == 20)
- System.out.println("変数valは20です");
- else
- System.out.println("変数valは10でも20でもありません");
ただし、カッコを省略してもさほど簡潔になるわけでもありませんし、むしろブロックの範囲が曖昧になるおそれがあります(例えば、あとから行を追加した時に、今度はブロックも追加しなければ、その行はifブロックの中のコードとは見なされません)。まずは、ブロックを表す{…}は省略しないのを基本としてください。
監修
山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。