カテゴリ: Java 更新日: 2026/03/28

Javaのif文の書き方とは?条件分岐の基本をやさしく解説

Javaのif文の書き方とは?条件分岐の基本をやさしく解説
Javaのif文の書き方とは?条件分岐の基本をやさしく解説

先生と生徒の会話形式で理解しよう

生徒

「Javaで条件によって処理を変える方法ってありますか?」

先生

「はい、Javaではif文を使って条件分岐を行うことができます。これはプログラミングの基本中の基本ですよ。」

生徒

「条件分岐って何ですか?」

先生

「例えば、点数が60点以上なら合格、未満なら不合格というように、条件によって異なる処理を実行することです。それでは、if文の使い方を詳しく見ていきましょう!」

1. if文とは何か

1. if文とは何か
1. if文とは何か

Javaのif文は、「ある条件が成り立ったときだけ処理を実行する」ための基本的な制御構文です。プログラミングでは、常に同じ処理を行うのではなく、状況に応じて動きを変える必要があります。その判断を担うのがif文です。

条件には「正しい(true)」か「正しくない(false)」かを判定できる式を書きます。条件がtrueの場合のみ、if文の中に書かれた処理が実行され、falseの場合はその処理はスキップされます。

この考え方は、私たちの日常の判断とよく似ています。たとえば「もし雨が降っていたら傘を持っていく」「もしお腹が空いていたら食事をする」といった判断を、プログラムとして表現したものがif文です。

まずは、「条件をチェックして、合っていれば処理を実行する」というシンプルな役割を理解することが大切です。Javaのif文は、これから学ぶ条件分岐のすべての土台になります。

以下は、プログラミング未経験者でも理解しやすい、非常に簡単なif文の例です。


public class IfSimpleExample {
    public static void main(String[] args) {
        int age = 20;

        if (age >= 18) {
            System.out.println("18歳以上です。");
        }
    }
}

この例では、「年齢が18以上かどうか」を条件として判定しています。ageの値が18以上であれば条件はtrueとなり、メッセージが表示されます。逆に18未満の場合は、何も表示されません。

このようにif文は、「条件 → 判断 → 実行」という流れで動作します。まずはこの基本的な仕組みをしっかり押さえておくと、後の学習がスムーズになります。

2. 基本的なif文の書き方

2. 基本的なif文の書き方
2. 基本的なif文の書き方

Javaでif文を書く基本的な構文は次のようになります。まずifというキーワードを書き、その後に丸括弧で条件式を囲みます。そして波括弧の中に条件が真のときに実行したい処理を記述します。

以下は、点数が60点以上かどうかを判定する簡単なサンプルコードです。変数scoreに格納された値が60以上であれば、合格のメッセージが表示されます。


public class IfBasicExample {
    public static void main(String[] args) {
        int score = 75;
        
        if (score >= 60) {
            System.out.println("合格です!");
        }
    }
}

このプログラムを実行すると、次のような結果が出力されます。


合格です!

条件式の部分には比較演算子を使います。ここでは「以上」を表す>=を使っていますが、他にも>(より大きい)、<(より小さい)、<=(以下)、==(等しい)、!=(等しくない)などがあります。

3. if-else文で条件に応じた処理を分ける

3. if-else文で条件に応じた処理を分ける
3. if-else文で条件に応じた処理を分ける

if文だけでは条件が真のときの処理しか書けませんが、else文を組み合わせることで、条件が偽のときの処理も記述できます。これをif-else文と呼びます。

if-else文を使えば、合格と不合格の両方のメッセージを表示することができます。条件式が真ならifブロックが実行され、偽ならelseブロックが実行されます。


public class IfElseExample {
    public static void main(String[] args) {
        int score = 45;
        
        if (score >= 60) {
            System.out.println("合格です!おめでとうございます。");
        } else {
            System.out.println("不合格です。もう一度挑戦しましょう。");
        }
    }
}

このプログラムの実行結果は次のようになります。scoreが45なので、条件式が偽となりelseブロックが実行されます。


不合格です。もう一度挑戦しましょう。

if-else文を使うことで、二択の判断を簡潔に記述できます。どちらか一方の処理が必ず実行されるという点が重要です。

4. else if文で複数の条件を判定する

4. else if文で複数の条件を判定する
4. else if文で複数の条件を判定する

二択だけでなく、三択以上の条件分岐が必要な場合もあります。そのようなときはelse ifを使います。else if文を使うことで、複数の条件を順番にチェックして、最初に真となった条件のブロックだけが実行されます。

例えば、点数によって評価を変える場合を考えてみましょう。80点以上なら優、60点以上なら良、それ未満なら不可というように段階的に判定できます。


public class ElseIfExample {
    public static void main(String[] args) {
        int score = 72;
        
        if (score >= 80) {
            System.out.println("評価:優");
        } else if (score >= 60) {
            System.out.println("評価:良");
        } else {
            System.out.println("評価:不可");
        }
    }
}

このプログラムでは、scoreが72なので、最初の条件は偽、二番目の条件が真となり、次の結果が表示されます。


評価:良

else if文は何個でも続けて書くことができます。ただし、上から順番に判定されるため、条件の順序には注意が必要です。より厳しい条件を先に書くのが一般的です。

5. 論理演算子を使った複雑な条件式

5. 論理演算子を使った複雑な条件式
5. 論理演算子を使った複雑な条件式

実際のプログラムでは、単純な条件だけでなく、複数の条件を組み合わせたい場合があります。そのようなときに論理演算子を使います。Javaには主に三つの論理演算子があります。

AND演算子&&は両方の条件が真のときに真を返します。OR演算子||はどちらか一方でも真なら真を返します。NOT演算子!は条件の真偽を反転させます。これらを組み合わせることで、より複雑な判定が可能になります。

例えば、年齢が18歳以上かつ運転免許を持っている場合に運転可能と判定するプログラムを考えてみましょう。


public class LogicalOperatorExample {
    public static void main(String[] args) {
        int age = 20;
        boolean hasLicense = true;
        
        if (age >= 18 && hasLicense) {
            System.out.println("運転できます。");
        } else {
            System.out.println("運転できません。");
        }
    }
}

この例では、年齢が18歳以上でありかつ免許を持っている場合のみ、運転可能と判定されます。どちらか一方でも条件を満たさない場合は運転できないと表示されます。

論理演算子を使うことで、一つのif文の中で複数の条件をチェックできるため、コードがシンプルになります。ただし、条件が複雑になりすぎると可読性が下がるので、適度に分割することも大切です。

6. ネストしたif文の使い方

6. ネストしたif文の使い方
6. ネストしたif文の使い方

if文の中に別のif文を入れることもできます。これをネスト(入れ子)構造と呼びます。複雑な条件判定が必要な場合に、段階的にチェックを行うことができます。

ただし、ネストが深くなりすぎるとコードが読みにくくなるため、できるだけ論理演算子を使って一つの条件式にまとめるか、メソッドに分割することが推奨されます。

例として、会員種別と購入金額によって割引率を決定するプログラムを見てみましょう。まず会員かどうかをチェックし、その中でさらに購入金額によって処理を分けます。


public class NestedIfExample {
    public static void main(String[] args) {
        boolean isMember = true;
        int purchaseAmount = 15000;
        double discount = 0;
        
        if (isMember) {
            if (purchaseAmount >= 10000) {
                discount = 0.2;
            } else {
                discount = 0.1;
            }
        } else {
            discount = 0;
        }
        
        System.out.println("割引率:" + (discount * 100) + "%");
    }
}

このプログラムでは、会員であり購入金額が10000円以上なので、20パーセントの割引が適用されます。ネストしたif文を使うことで、段階的な判定を明確に表現できます。

7. if文の波括弧を省略できる場合

7. if文の波括弧を省略できる場合
7. if文の波括弧を省略できる場合

if文では、実行する文が一つだけの場合に限り、波括弧を省略することができます。しかし、初心者のうちは可読性やメンテナンス性の観点から、常に波括弧を書くことをお勧めします。

波括弧を省略すると、ifの直後の一文だけが条件の対象となります。後から処理を追加したときに、波括弧がないと意図しない動作になることがあるため、注意が必要です。

チーム開発では、コーディング規約で波括弧の省略を禁止している場合も多くあります。統一されたスタイルでコードを書くことが、バグを減らし保守性を高めることにつながります。

8. if文とswitch文の使い分け

8. if文とswitch文の使い分け
8. if文とswitch文の使い分け

条件分岐にはif文以外にswitch文という構文もあります。switch文は特定の変数の値によって処理を分岐させる場合に便利です。しかし、複雑な条件式を書くことはできません。

if文は柔軟な条件式を書けるのが利点です。比較演算子や論理演算子を自由に使えるため、あらゆる条件判定に対応できます。一方、switch文は値の一致判定に特化しているため、コードがすっきりする場面もあります。

一般的には、範囲判定や複雑な条件が必要な場合はif文を使い、複数の定数値による分岐の場合はswitch文を検討するとよいでしょう。どちらを使うかは状況に応じて判断します。

9. if文でよくある間違いと注意点

9. if文でよくある間違いと注意点
9. if文でよくある間違いと注意点

初心者がif文を使う際によくある間違いの一つが、等価比較で代入演算子=を使ってしまうことです。Javaでは等価比較には必ず==を使う必要があります。一つのイコールは代入を意味するため、条件式では使えません。

また、浮動小数点数の比較には注意が必要です。計算誤差により、見た目は同じ値でも完全に一致しないことがあります。そのような場合は、差の絶対値が十分小さいかどうかで判定する方法が推奨されます。

さらに、文字列の比較では==ではなくequalsメソッドを使う必要があります。これはJavaが文字列をオブジェクトとして扱うためです。==は参照の比較となり、内容が同じでも異なるオブジェクトだと偽になってしまいます。

条件式の中で変数の値を変更することも避けるべきです。条件判定と値の変更を同時に行うと、コードの意図が分かりにくくなり、予期しないバグの原因となります。条件式は純粋に判定だけを行うようにしましょう。

10. if文を使った実践的なプログラム例

10. if文を使った実践的なプログラム例
10. if文を使った実践的なプログラム例

最後に、if文を使った実践的なプログラム例を見てみましょう。ここでは、ユーザーの入力に応じて異なる処理を行う簡単な判定プログラムを作成します。

このプログラムでは、気温に応じて服装のアドバイスを表示します。複数の条件分岐を組み合わせることで、実用的な判定ロジックを実装できます。


public class TemperatureAdvice {
    public static void main(String[] args) {
        int temperature = 18;
        boolean isRaining = false;
        
        System.out.println("現在の気温:" + temperature + "度");
        
        if (temperature >= 25) {
            System.out.println("暑いです。半袖で過ごしましょう。");
        } else if (temperature >= 15) {
            System.out.println("過ごしやすい気温です。長袖シャツがおすすめです。");
        } else if (temperature >= 5) {
            System.out.println("少し寒いです。上着を持って行きましょう。");
        } else {
            System.out.println("とても寒いです。コートが必要です。");
        }
        
        if (isRaining) {
            System.out.println("雨が降っています。傘を忘れずに!");
        }
    }
}

このプログラムは気温が18度で雨が降っていない状況を想定しています。実行すると次のような出力が得られます。


現在の気温:18度
過ごしやすい気温です。長袖シャツがおすすめです。

このように、if文を使うことで条件に応じた柔軟な処理が実現できます。日常的な判断をプログラムで表現する力は、あらゆるアプリケーション開発の基礎となります。

if文をマスターすることで、ユーザーの入力に応じて動作を変えたり、データの状態によって処理を切り替えたりできるようになります。まずは簡単な条件分岐から始めて、徐々に複雑な判定ロジックにも挑戦してみてください。

まとめ

まとめ
まとめ

ここまで、Javaプログラミングの根幹を支える「if文」について詳しく解説してきました。条件分岐は、プログラムに「判断力」を持たせるための非常に重要な仕組みです。私たちが日常生活で「もし雨が降ったら傘を持つ」「もしお腹が空いたらご飯を食べる」と無意識に行っている判断を、コンピュータの世界で再現するのがこのif文の役割です。

Javaにおけるif文の基本は、ifelse ifelseの3つのキーワードを使いこなすことにあります。単純な二択の判定から、複数の条件を組み合わせた複雑なロジックまで、幅広く対応することが可能です。また、&&(かつ)や||(または)といった論理演算子を活用することで、条件式をよりスマートに記述できることも学びました。

Java if文の重要ポイント再確認

Javaでプログラムを書く際、if文で特に注意すべきなのは「比較演算子」の使い方です。数値を比べるための>=<=だけでなく、等しいことを示す==を正しく使う必要があります。初心者がやりがちなミスとして、代入の=と比較の==を混同してしまうケースがありますが、これはコンパイルエラーや予期せぬバグの原因となります。

また、応用編として紹介した「ネスト(入れ子)」構造は便利ですが、使いすぎるとコードが読みづらくなる「スパゲッティコード」の原因にもなり得ます。条件が複雑になりそうなときは、一度立ち止まって「論理演算子でまとめられないか?」あるいは「判定の順番を変えてスッキリさせられないか?」を考える癖をつけると、プログラミングスキルがぐっと向上します。

実践的なサンプルプログラム:数値の範囲判定

最後に、今回学んだif文の知識を総動員して、入力された数値が「正の数」「負の数」「ゼロ」のどれに該当するか、さらに「偶数」か「奇数」かを判定する総合的なサンプルコードを見てみましょう。


public class FinalCheckExample {
    public static void main(String[] args) {
        int number = 10;
        
        // 数値の正負とゼロを判定
        if (number > 0) {
            System.out.println(number + "は正の数です。");
            
            // 正の数の中でさらに偶数か奇数かをネストで判定
            if (number % 2 == 0) {
                System.out.println("さらに、この数値は偶数ですね。");
            } else {
                System.out.println("さらに、この数値は奇数ですね。");
            }
            
        } else if (number < 0) {
            System.out.println(number + "は負の数です。");
        } else {
            System.out.println("この数値はゼロです。");
        }
        
        // 論理演算子を使った範囲チェックの例
        if (number >= 1 && number <= 100) {
            System.out.println("この数値は1から100の範囲内に収まっています。");
        }
    }
}

このプログラムを実行すると、変数numberが10の場合、以下のような結果が出力されます。


10は正の数です。
さらに、この数値は偶数ですね。
この数値は1から100の範囲内に収まっています。

このように、条件を階層化したり、範囲を指定したりすることで、非常にきめ細やかな処理が可能になります。Javaの学習において、if文を自由自在に操れるようになることは、脱・初心者への第一歩と言えるでしょう。

先生と生徒の振り返り会話

生徒

「先生、if文を使うとプログラムが急に『賢くなった』感じがしますね!自分で考えて動いているみたいです。」

先生

「その感覚はとても大切ですよ。プログラムに判断基準を与えるのが、私たちプログラマーの仕事ですからね。if文の書き方で迷ったところはありますか?」

生徒

else ifをいくつも繋げるとき、順番を間違えると正しく動かないことがあるって聞いたのですが、本当ですか?」

先生

「鋭いですね。その通りです。if文は『上から順番に』判定されるので、広い条件を先に書いてしまうと、その下の細かい条件までチェックがいかないんです。例えば『80点以上』を判定したいのに、先に『60点以上』の判定を書いてしまうと、80点の人も『60点以上』のブロックに入って終わってしまいます。」

生徒

「なるほど、条件の厳しいものから順番に並べるのがコツなんですね!あと、文字列の比較には==じゃなくてequals()を使うというのも忘れないようにします。」

先生

「素晴らしい!基本をしっかり押さえられましたね。条件分岐ができるようになれば、次は繰り返し処理(ループ)を組み合わせることで、もっと複雑で面白いプログラムが作れるようになります。この調子で頑張りましょう!」

生徒

「はい!もっと色々な条件を組み合わせて、実用的なツールを作ってみたいと思います。ありがとうございました!」

カテゴリの一覧へ
新着記事
New1
Micronaut
Micronautのイベント発行とリスナーの使い方!アプリ内通信の基本をやさしく解説
New2
Quarkus
QuarkusのREST APIでJSONレスポンスを返す方法を完全解説!初心者向けJackson・JSON-B入門
New3
Quarkus
Quarkus拡張開発入門!GraalVMネイティブイメージ統合の仕組みを徹底解説
New4
Micronaut
Micronautの@Requiresとは?条件付きBeanの読み込み方法をやさしく解説【DIとアノテーション入門】
人気記事
No.1
Java&Spring記事人気No1
Java
Javaのコンパイルと実行の流れを解説!JVM・JDK・JREの違いも初心者向けに整理
No.2
Java&Spring記事人気No2
Quarkus
Quarkus拡張開発を徹底解説!仕組みから自作エクステンションの作り方まで
No.3
Java&Spring記事人気No3
Java
JavaのString検索方法を完全ガイド!contains・indexOf・startsWith・endsWithを徹底解説
No.4
Java&Spring記事人気No4
Quarkus
Quarkus入門!GitHub ActionsでCI/CDパイプラインを構築して自動ビルドを実現する方法
No.5
Java&Spring記事人気No5
Java
JavaのString比較を徹底解説!equalsと==の違い、初心者が陥る罠とは?
No.6
Java&Spring記事人気No6
Java
Java Functionインタフェースの使い方を完全ガイド!map変換と処理チェーンを理解する
No.7
Java&Spring記事人気No7
Quarkus
Quarkus拡張開発入門!自作Extensionを作る基本ステップと仕組みを徹底解説
No.8
Java&Spring記事人気No8
Quarkus
Quarkus拡張開発をマスター!ビルドプロセスの仕組みと内部構造を徹底解説