if文(条件分岐)は、与えられた条件が「真(true)」のときのみ特定の処理を実行する仕組みです。たとえば「もし○○ならば、この処理をする」というように、プログラムの分岐を実現します。条件に応じて処理を変化させることで、より柔軟で複雑な動きをするプログラムを作ることができます

このページでは初心者がif文(if~else)について理解すべき主なポイントを5つに絞って3分で分かりやすく解説していきます。
Java:if文の構文ルール
if文は、指定した条件が「真(true)」かどうかを判断するために利用します。#条件は括弧()
内に記述。→例えば、ある変数age
が18以上であるかどうかをチェックする場合は以下の通り。
if (age >= 18) { // 条件が真のときに実行されるコード }
この例では、age >= 18
が条件です。この条件が「真=つまりageという変数が18以下」ならば、if文の中のコードが実行されます。>=
は「以上」という意味の比較演算子です。

条件は複数設定することができます(例えばAかつB,AまたはBなど)。これについてはポイント5で解説します。
ポイント1:コードブロック
条件が真である場合に実行されるコードを波括弧{}
で囲みますが、この部分をコードブロックと言います。例えば、年齢が18歳以上の場合に「あなたは成人です」と表示したい場合、Javaのコードは↓のように感じになります。
if (age >= 18) { System.out.println("あなたは成人です"); }
avaのif
文では、実行する文が1つだけの場合、コードブロック {}
を省略することが可能です。
int num = 10; if (num > 5) System.out.println("numは5より大きい"); // コードブロックなし
if
文の直後の1文のみが適用されるため、複数行の処理が必要な場合はコードブロック{}
を使うべきです。- ネストした場合の可読性が悪くなるため、省略は推奨されません。
サンプルコード 意図しない動作の例
int num = 10; if (num > 5) System.out.println("numは5より大きい"); System.out.println("これは常に実行される");

コードブロック {}
を省略することは可能だが、可読性や意図しない動作を避けるため、基本的には {}
をつけるのが推奨です。
ポイント2:if ~ else 文
条件が偽(false)の場合に何かを実行したい場合の処理も記述することもできます。その際はelse
を使い、if文の直後にelse
ブロックを追加して、条件が偽の時に実行されるコードを書きます。
if (age >= 18) { System.out.println("あなたは成人です"); } else { System.out.println("あなたは未成年です"); }
↑のコードを実行すると、age
が18未満であれば、「あなたは未成年です」と表示されます。
ポイント3:if ~ else if ~ else 文
複数の条件を順番に判定したい場合は、else if
を追加します。Java では else if
は必要なだけ続けて書くことができます。
if (条件式1) { // 条件式1が true のときの処理 } else if (条件式2) { // 条件式1 は false だが条件式2が true のときの処理 } else { // 上記いずれの条件も満たさないときの処理 }
使用例
int score = 90; if (score >= 90) { System.out.println("評価: A"); } else if (score >= 80) { System.out.println("評価: B"); } else if (score >= 70) { System.out.println("評価: C"); } else { System.out.println("評価: D"); } /* score >= 90 が真なら「評価: A」 上記が偽で score >= 80 が真なら「評価: B」 上記が偽で score >= 70 が真なら「評価: C」 それ以外なら「評価: D」 */
ポイント4:if文と比較演算子
Javaでも他のプログラミング言語同様、比較演算子を使って数値や変数の比較を行います。
比較演算子とは、2つの値を比較しその比較結果が真(true)か偽(false)かを判定するために使われる特殊な記号や演算子のこと。以下がその一覧です。

#普通に数学を勉強していればどれも直感的に理解できるものです。
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
== | 等しい | 5 == 5 | true |
!= | 等しくない | 5 != 4 | true |
< | より小さい | 3 < 5 | true |
> | より大きい | 10 > 7 | true |
<= | 以下(以下) | 5 <= 5 | true |
>= | 以上(以上) | 5 >= 4 | true |
これらの演算子を使って、プログラム内で数値や他のデータ型の比較を行うことができます。
public class ComparisonExample { public static void main(String[] args) { int a = 5; int b = 10; // 等しい System.out.println("a == b: " + (a == b)); // 出力: a == b: false // 等しくない System.out.println("a != b: " + (a != b)); // 出力: a != b: true // より小さい System.out.println("a < b: " + (a < b)); // 出力: a < b: true // より大きい System.out.println("a > b: " + (a > b)); // 出力: a > b: false // 以下 System.out.println("a <= b: " + (a <= b)); // 出力: a <= b: true // 以上 System.out.println("a >= b: " + (a >= b)); // 出力: a >= b: false } }

演算子の使い方がいまいち理解できていない・・・!という方は以下の記事でおさらいしておきましょう。
ポイント5:if文と論理演算子(AND/OR/NOT)
複数の条件を組み合わせたい場合は、論理演算子を使用します。論理演算子とは、条件を組み合わせたり、条件を反転させたりするために使われる特殊な記号や演算子です。これらを用いることで複数の条件を1つの式にまとめたり、条件の真偽を変えたりすることが可能です。

論理演算子は、どのプログラミング言語においても活躍するもので、知っておくと非常に役立ちます。
演算子 | 名称 | 説明 |
---|---|---|
&& | 論理積(AND) | すべての条件が真(true)であれば真。(つまり、AかつB。) |
|| | 論理和(OR) | 少なくとも一つの条件が真であれば真。(つまり、AまたはB。) |
! | 論理否定(NOT) | 条件の真偽を反転(つまり、〇〇ではない)。 |
以下のJavaのコードは、上記の論理演算子を使って複数の条件を評価する方法のサンプル。この例では、特定の条件下で異なるメッセージを表示します。
public class LogicalOperatorsDemo { public static void main(String[] args) { int age = 20; boolean isStudent = true; boolean hasTicket = false; // 論理積(AND)の例 if (age > 18 && isStudent) { System.out.println("You are an adult student."); } // 論理和(OR)の例 if (isStudent || hasTicket) { System.out.println("You can enter the student event."); } // 論理否定(NOT)の例 if (!hasTicket) { System.out.println("You need a ticket to enter."); } } }
最初のif文では、年齢が18歳を超えているかつ学生であるかを確認します(&&
)。両方の条件が真のときに「You are an adult student.」と表示されます。
2番目のif文では、学生であるかチケットを持っているかのどちらか一方が真であれば「You can enter the student event.」と表示されます(||
)。
同様に最後のif文では、チケットを持っていないかを確認し(!
)、その条件が真であれば「You need a ticket to enter.」と表示されます。

if文の基本はこれだけ。特に、論理演算子(AND/OR)とかの使い方に迷う人がいるかもしれませんが、躓きやすいのはその辺だけです。
合わせて確認! Java:Switch文による条件分岐のコツを3分で解説
if文の動作原理をさらに詳しく

最後に脱・初心者向けの解説を加えておきます。
ここからはコードの書き方ではなく、書いたコードが裏側でどのような仕組みで動いていくのか?に焦点を当ててご説明します。
if文の動作原理を整理
- プログラムが if 文に到達する
メソッド内で順次コードを実行していく過程で、if 文まで来たら条件式を評価します。 - 条件式の評価
if (条件式)
の部分で、Java は条件式を評価してtrue
またはfalse
を得ます。- 例:
score >= 80
という条件式なら、変数score
の値と 80 を比較し、ブール値を生成します。
- 例:
- 条件に応じたブロックの実行
- 条件式が
true
→{ }
の中に書かれた命令が実行される - 条件式が
false
→else
のブロックがあればそちらを実行。else if
があれば順次評価していく
- 条件式が
- 条件式の評価後、次の命令へ
ブロック内のコードが終わったら、if 文のブロック終了後の次の命令へ進みます。
Java の内部的な処理(コンパイラとバイトコードの観点)
Java ではソースコードがコンパイルされると、JVM(Java仮想マシン)が解釈するバイトコードに変換されます。if 文の条件分岐に関連する命令は、たとえば以下のような分岐命令が使われます。
if_icmpge
(整数比較で「>=」ならばジャンプする)if_icmpgt
(整数比較で「>」ならばジャンプする)if_acmpeq
(参照同士の比較で「==」ならばジャンプする)goto
(指定のラベルへ無条件ジャンプする)
...など
具体的には、Javaコンパイラが if 文を検出すると、if (score >= 80)
といった条件式を評価するためにまずレジスタ(あるいはスタック上)で score
の値を取り出し、80との比較を行います。そして比較結果が真か偽かによって、指定された行へジャンプ(バイトコードレベルの分岐)するかどうかが決まります。
実際のソースコードを書いている段階では、これらの低レベルな分岐命令を意識する必要はありません。ただし、Java が if 文をどのように実行しているかを深く知りたい場合、このようなバイトコードレベルで「比較→条件分岐命令→ジャンプ」という流れで動いていることを理解しておくと良いでしょう。
よくある注意点・ベストプラクティス
int score = 85; if (score >= 80) System.out.println("合格です!"); // 省略可能:if の直後に1行だけの処理 (System.out.println()) がある。 // { } をつけなくても正しく動作する。
int score = 75; if (score >= 80) System.out.println("合格です!"); else System.out.println("不合格です。"); // if と else のどちらも1行ずつしかないため、 { } なしで書ける。

複数行の処理がある場合にはもちろん{}は省略できません。
でも、コンパイルエラーにはならないパターンもあります。
int score = 85; if (score >= 80) System.out.println("合格です!"); System.out.println("おめでとうございます!"); // 誤解を招く書き方! // if (score >= 80) の影響を受けるのは 1行目のみ("合格です!" だけ)。 // "おめでとうございます!" は if 文の外にあるため、常に実行される。
String str = "Hello"; if (str.equals("Hello")) { System.out.println("文字列はHelloです"); }
boolean isMember = true; if (isMember) { // そのまま使える }