注目記事

【Javaコード入門】制御構文_①if命令

処理を分岐する – if命令

if(condition) {
 statements
} else if(condition2) {
 statements
}

else {
 statements
}
 condition、condition2…:条件式
 statements:条件に合致した時に実行される命令文

if命令は、与えられた条件の真偽に応じて実行する命令を分岐します。直訳するならば、「もし~ならば…」という構造を表します。たとえば以下は、変数valが10であれば「変数valは10です」というメッセージを表示するサンプルです。

StatIf.java
  1. package com.example.mynavi.control;
  2.  
  3. public class StatIf {
  4.   public static void main(String[​] args) {
  5.     var val = 10;
  6.     if (val == 10) {
  7.       System.out.println("変数valは10です");
  8.     }   // 結果:変数valは10です
  9.   }
  10. }

「もし~ならば…さもなくば…」を表現したいならば、else句を利用します。

StatIf2.java
  1. package com.example.mynavi.control;
  2.  
  3. public class StatIf2 {
  4.   public static void main(String[​] args) {
  5.     var val = 11;
  6.     if (val == 10) {
  7.       System.out.println("変数valは10です");
  8.     } else {
  9.       System.out.println("変数valは10ではありません");
  10.     }   // 結果:変数valは10ではありません
  11.   }
  12. }

更に、「もし~ならば…、~ならば…、さもなくば…」のように複数分岐を表したいならば、else if句を利用します。else if句は、必要な数だけ繰り返し書いて構いません。

StatIf3.java
  1. package com.example.mynavi.control;
  2.  
  3. public class StatIf3 {
  4.   public static void main(String[​] args) {
  5.     var val = 11;
  6.     if (val == 10) {
  7.       System.out.println("変数valは10です");
  8.     } else if (val == 20) {
  9.       System.out.println("変数valは20です");
  10.     } else {
  11.       System.out.println("変数valは10でも20でもありません");
  12.     }   // 結果:変数valは10でも20でもありません
  13.   }
  14. }

ブロックの省略

ブロックの中のコードが1文である場合には、「{…}」を省略することも可能です。よって、StatIf3.javaは以下のように書いても同じ意味です。

  1. var val = 11;
  2. if (val == 10)
  3.   System.out.println("変数valは10です");
  4. else if (val == 20)
  5.   System.out.println("変数valは20です");
  6. else
  7.   System.out.println("変数valは10でも20でもありません");

ただし、カッコを省略してもさほど簡潔になるわけでもありませんし、むしろブロックの範囲が曖昧になるおそれがあります(例えば、あとから行を追加した時に、今度はブロックも追加しなければ、その行はifブロックの中のコードとは見なされません)。まずは、ブロックを表す{…}は省略しないのを基本としてください。

制御構文_目次
if命令
switch命令
while命令
do…while命令
for命令
拡張for命令
break命令
continue命令

監修

山田祥寛(有限会社 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万部を超える。