Javaの制御フロー構文を徹底解説:if、else、switchの使い方と実例コード
Javaには、プログラムの流れ(制御フロー)を操作するための方法がいくつか用意されています。制御フロー文は、条件分岐の仕組みを実装することで、プログラムの実行の流れを変更したり中断したりします。
Javaにおける条件分岐のための主な構文は以下の3つです。
if文if...else文switch文
この記事では、Javaの制御フロー構文について、それぞれの説明と実際のコード例を交えて詳しく解説します。
Javaのif文とは
if 文の基本構文は次のとおりです。
if(condition) {
// 条件がtrueの場合にのみ、このコードが実行される
}
if キーワードは、指定した条件が真(true)かどうかを判定するために使われます。条件がtrueであれば、波括弧 { } の中に記述されたコードが実行されます。
if文のコード例
if(month == 'December') {
System.out.println("Winter Season");
}
注意: 括弧内の条件式は必ずboolean型である必要があります。つまり、その式の評価結果は true または false のいずれかでなければなりません。
比較演算子の一覧
条件の判定には、通常の数学的な比較演算子を使用します。
- より小さい(未満):
a < b - 以下:
a <= b - より大きい(超える):
a > b - 以上:
a >= b - 等しい:
a == b - 等しくない:
a != b
条件は1つでも複数でも構いませんが、最終的な評価結果は必ずboolean型になる必要があります。
複数条件の組み合わせ(論理演算子)
複数の条件を扱う場合は、論理AND(&&)や論理OR(||)といった論理演算子を使います。
論理OR(||)を使ったif文の例:
if(month == 'December' || month == 'January') {
System.out.println("Winter Season");
}
論理AND(&&)を使ったif文の例:
if(month == 'December' && day == '25') {
System.out.println("Christmas Day!");
}
注意: 論理AND(&&)は、両方の条件がtrueの場合にのみtrueを返します。一方、論理OR(||)は、どちらか一方でもtrueであればtrueを返します。
Javaのelse文とは
if 文の評価結果がfalseになった場合に別の処理を行いたいときは、else 文を使用します。
else 文は、if 文の閉じ波括弧の直後に記述します。
else文のコード例
int temperature;
if(temperature <= 0) {
System.out.println("Water in solid state");
} else {
System.out.println("Water in liquid state");
}
上記の例では、温度が0以下であれば「Water in solid state(水は固体状態)」がコンソールに出力され、else 側の処理は実行されません。
逆に、温度が0より大きい場合は「Water in liquid state(水は液体状態)」が出力されます。
三項演算子による省略記法
if...else 文は、三項演算子(ternary operator)と呼ばれる省略記法でも書くことができます。
三項演算子の構文は以下のとおりです。
variable = (condition) ? expressionTrue : expressionFalse;
まず括弧 () 内の条件が評価されます。結果がtrueであれば ? と : の間の式が実行され、falseであれば : の後ろの式が実行されます。
覚え方のコツとしては、「(条件) ? trueの場合 : falseの場合」という形式だと理解すると分かりやすいでしょう。
Javaのelse if文とは
条件が満たされるまで、複数の if 文と else 文を連ねて使うこともできます。
else if の構文は次のとおりです。
if(condition1) {
// condition1がtrueの場合のみ実行される
} else if(condition2) {
// condition2がtrueの場合に実行される
} else {
// どちらの条件もfalseの場合に実行される
}
注意: else if 文はいくつでも追加できますが、最後は必ず else 文で締めくくるのが一般的です。
else if文のコード例
int temperature;
if(temperature <= 0) {
System.out.println("Water in solid state");
} else if(temperature >= 100){
System.out.println("Water in gas state");
} else {
System.out.println("Water in liquid state");
}
この例では、温度が0以下なら固体、100以上なら気体、それ以外なら液体として判定されます。状態に応じて3通りの出力が切り替わる仕組みです。
Javaのswitch文とは
プログラムの流れを制御するもう一つの方法が switch 文です。switch 文は、選択肢が複数あり、それぞれのケースごとに異なるコードを実行したい場合に使用します。
動作イメージとしては、複数の if...else 文を並べたものに近いです。
switch文の基本構文
switch(expression) {
case a:
// 何らかのコードを実行
break;
case b:
// 別のコードを実行
break;
default:
// デフォルトのコードを実行
}
まず式(expression)が評価され、その結果が各 case の値と順番に比較されます。式の結果がいずれかの case と一致した場合、そのケースに関連付けられたコードブロックが実行されます。
break キーワードは、switch ブロックから抜け出すために使います。一致するケースが見つかった後に、残りの case を評価し続けないようにするために重要です。
default キーワードは、どの case とも一致しなかった場合に実行される処理を定義します。
break と default はどちらも省略可能ですが、可読性と安全性の観点から、記述することが推奨される良いコーディング習慣です。
switch文の実践的なコード例
以下のコードは、switch文を使って言語がサポートされているかどうかを判定する例です。
String lang = "en";
switch (lang) {
case "en":
System.out.println("English");
break;
case "fr":
System.out.println("French");
break;
case "de":
System.out.println("Deutsch");
break;
default:
System.out.println("Language not supported");
}
実行結果:
English
変数 lang の値が "en" であるため、最初の case に一致し、「English」が出力されて break によりswitch文を抜けます。
まとめ
この記事では、Javaの制御フロー構文である if 文、else if 文、そして switch 文について解説しました。
単純な二択の条件分岐には if...else、複雑な多段階の判定には else if、多数の選択肢から一つを選ぶ場合には switch 文が適しています。それぞれの特徴を理解して、状況に応じて使い分けることで、より読みやすく保守性の高いコードを書くことができます。
-
C言語のループ制御文(for・while・do-while)を徹底解説!フローチャートとサンプルコード付き
C言語におけるループ制御文は、同じ処理を何度も繰り返し実行したい場合に使われる重要な構文です。毎回コードを書き連ねる必要がなくなり、プログラムを簡潔かつ効率的に記述できます。 C言語で利用できるループ制御文は、主に以下の3種類です。 for文 while文 do-while文 本記事では、それぞれの構文の書き方、フローチャートによる動作の流れ、実際に動くサンプルプログラムと実行結果まで、初心者にもわかりやすく解説します。 for文とは?基本構文と使い方 for文は、「初期化」「条件式」「増減式」を1行にまとめて記述できる、最もよく使われるループ構文です。繰り返す回数があらかじめ決まっている
-
macOSでControlキーとCommandキーを入れ替える方法【Windows風の操作に変更】
長年Windowsを使ってきた方がMac(macOS)に乗り換えたばかりの頃、最も戸惑いやすいのがキーボードの違いです。特に、ショートカットキーの中心となる「Control(Ctrl)」キーと「Command(Cmd)」キーの役割の違いには悩まされがちです。 WindowsとMacではショートカットキーの考え方が逆 Windowsでは、ほとんどのキーボードショートカットがControlキーを使って行われます。「Ctrl + A」ですべて選択、「Ctrl + C」でコピー、「Ctrl + V」で貼り付けといった具合です。 一方、Macではこれが完全に逆になります。キーボードにはControlキー