6日でできる 新Java入門|制御文② 条件文とboolean型

条件を見極める力がつくと、Javaはただ動くだけのコードから、判断できるプログラムへ進化する

Javaのプログラムは、ただ上から順番に文を実行するだけでは、本当に実用的な動きにはなりません。状況によって別の処理をしたり、条件に合うときだけ何かを実行したり、複数の判定を組み合わせて動きを変えたりできるようになって、はじめて柔軟なプログラムになります。そこで大切になるのが、条件文と boolean型 です。

ドラゴンボールの世界でたとえるなら、修行や戦いの場面では、いつでも同じ行動をするわけではありません。気が十分にたまっているなら技を出す、相手が近いなら防御する、修行回数が足りなければ続ける、というように、その場の条件を見て判断しています。Javaの条件文もそれと同じで、値を比較し、その結果が true か false かによって、次の行動を決める仕組みです。

この記事では、比較演算子の意味、条件式が返す true と false、boolean型の役割、AND や OR などの論理演算子、そしてそれらを実際のプログラムでどう使うかを、順番にしっかり見ていきます。例示プログラムは Lesson09_1.java から Lesson09_5.java までを使い、修行判定や技の条件チェックのような流れに置き換えながら解説します。ここを理解すると、Javaプログラムが 条件を見て動く という感覚がかなりつかみやすくなります。

条件文とは何か

条件文とは、ある条件が成り立つかどうかによって、処理の流れを変えるための考え方です。Javaではこの条件を式として書き、その結果が true か false になります。そして、その結果をもとに処理を分けたり、繰り返しを続けたりします。

ドラゴンボール風にいえば、これは 修行続行の判定係 のようなものです。気が足りているか、目標回数に達したか、次の段階へ進めるかを見て、行動を切り替えます。

条件文が必要になる場面

場面何を判断するか
合格判定点数が基準以上かどうか
年齢判定一定以上の年齢かどうか
範囲チェック値が特定の範囲に入っているか
繰り返し条件まだ続けるべきかどうか

このように、条件文はプログラムに 判断力 を持たせるための基礎です。

比較演算子の種類

Javaでは、値と値を比べるために比較演算子を使います。比較した結果は、必ず true または false になります。

比較演算子の一覧

演算子意味使用例
==左右が等しいx == y
!=左右が等しくないx != y
>左が右より大きいx > y
<左が右より小さいx < y
>=左が右以上x >= y
<=左が右以下x <= y

ここで特に注意したいのが = と == の違いです。

= と == の違い

書き方意味
=代入する
==等しいか比較する

これは初心者がかなり混同しやすいところです。たとえば age = 20 は age に 20 を入れる意味で、age == 20 は age が 20 と等しいかどうかを調べる意味です。見た目が少し似ているので、ここは丁寧に区別して覚えることが大切です。

ドラゴンボール風にたとえるなら、= は 修行記録を書き込む 動作、== は 記録を見比べて同じか確認する 動作 です。役割がまったく違います。

条件式の真と偽

比較演算子を使った式は、結果として true または false になります。この true と false が、Javaにおける条件判断の土台です。

条件式の例

int score = 85;
boolean isPass = score >= 70;
System.out.println("合格判定: " + isPass);

実行結果

合格判定: true

この例では、score >= 70 という比較を行っています。85 は 70 以上なので、結果は true になります。そしてその結果が boolean型の変数 isPass に入ります。

ここで分かるのは、比較そのものが true または false という値を生み出すということです。条件はただの文章ではなく、Javaの中ではきちんと値として扱われています。

boolean型とは何か

boolean型は、true または false のどちらかだけを持つ型です。数値や文字列とは違い、真か偽かだけを表します。

ドラゴンボール風にいえば、boolean型は 修行成功か失敗か、気が満ちたか未達か を記録する判定札のようなものです。白か黒か、進めるか止まるか、という情報を持つのに向いています。

boolean型の基本

型名用途例
booleantrue, false条件分岐、判定処理、フラグ管理

宣言例

boolean flag;
flag = true;

boolean isReady = false;

boolean型は、条件式の結果を受け取るだけでなく、自分で true や false を直接入れることもできます。

比較演算の結果を boolean 変数に入れる

比較の結果を boolean変数に入れておくと、その判定をあとで使いやすくなります。

int power = 10;
boolean greaterThanFive = power > 5;
boolean lessThanZero = power < 0;

System.out.println(greaterThanFive);
System.out.println(lessThanZero);

実行結果

true
false

このように、比較結果を名前付きで持てるようになると、コードの意味が分かりやすくなります。power > 5 を何度も書く代わりに、greaterThanFive という名前で持っておけば、あとから読んだときにも意図がはっきりします。

論理演算子とは何か

条件は1つだけとは限りません。複数の条件を組み合わせて判断したいこともあります。そのときに使うのが論理演算子です。

論理演算子の種類

論理演算子説明使い方例
&&論理積(AND)x > 0 && x < 10
||論理和(OR)x < 0 || x >= 10
!否定(NOT)!isReady

AND と OR の考え方

xyx && yx || y
truetruetruetrue
truefalsefalsetrue
falsetruefalsetrue
falsefalsefalsefalse

AND は 両方とも true のときだけ true です。
OR は どちらか片方でも true なら true です。
NOT は true と false を反転させます。

ドラゴンボール風にたとえるなら、AND は 気が十分で、しかも構えも整っているときだけ技を出せる 条件です。OR は 岩場でも空中でも、どちらか条件が合えば移動できる ようなイメージです。

複数条件の判定例

int age = 25;
boolean isYouth = age >= 20 && age < 30;
System.out.println("20代ですか?: " + isYouth);

実行結果

20代ですか?: true

この例では、20以上 かつ 30未満 という2つの条件を AND でつないでいます。両方とも満たしているので true になります。

条件が常に true の場合

while文でも出てきましたが、条件が常に true なら、ループはずっと続きます。

while (true) {
    break;
}

このような書き方は、意図して無限ループを作るときに使われることがありますが、普通はどこかで脱出条件が必要です。

ドラゴンボール風にいえば、修行終了の合図が一切なく、ずっと同じ型を続ける状態です。意図があるならよいですが、うっかり起こると大変です。

条件が最初から false の場合

逆に、条件が最初から false なら、その処理は1回も実行されません。

while (false) {
    System.out.println("この処理は実行されません。");
}

これは while文 が 最初に条件を判定する からです。条件が成り立たないなら、ブロックの中には入りません。

優先順位に注意する

条件式が複雑になってくると、どの部分が先に評価されるのかが分かりにくくなることがあります。そういうときは、括弧を使って明確にするのが安全です。

int a = 3, b = 4, c = 5;
boolean result = a + b > c && c < 10;
System.out.println(result);

実行結果

true

この式は Java の規則に従って正しく評価されますが、人が読むときには少し考える必要があります。そこで、必要に応じて括弧を入れると意図が伝わりやすくなります。

boolean result = (a + b > c) && (c < 10);

このように書くと、何を先に見ているのかが分かりやすくなります。

年齢判定の例

ここからは、具体的な例示プログラムを順番に見ていきます。修行参加の可否を判定する例です。

ファイル名:Lesson09_1.java

public class Lesson09_1 {
    public static void main(String[] args) {
        int trainingAge = 20;
        boolean canJoin = trainingAge >= 18;

        System.out.println("修行参加年齢:" + trainingAge);
        System.out.println("上級修行に参加できますか?:" + canJoin);
    }
}

実行結果

修行参加年齢:20
上級修行に参加できますか?:true

このプログラムでは、18以上かどうかを比較して、その結果を canJoin に入れています。条件式の結果が boolean型の値として扱われる、基本的な形です。

点数による判定の例

技の習得を判定する例です。

ファイル名:Lesson09_2.java

public class Lesson09_2 {
    public static void main(String[] args) {
        int techniqueScore = 68;
        boolean hasMastered = techniqueScore >= 60;

        System.out.println("技の達成点:" + techniqueScore);
        System.out.println("技を習得しましたか?:" + hasMastered);
    }
}

実行結果

技の達成点:68
技を習得しましたか?:true

ここでは 60以上なら習得済み としています。比較演算子 >= が、そのまま判定の基準になっています。

範囲チェックの例

次は、ある値が特定の範囲に入っているかどうかを AND と OR を使って調べる例です。修行レベルの範囲を判定します。

ファイル名:Lesson09_3.java

public class Lesson09_3 {
    public static void main(String[] args) {
        int level = 7;
        boolean inRange = level > 0 && level < 10;
        boolean outOfRange = level < 0 || level > 10;

        System.out.println("現在の修行レベル:" + level);
        System.out.println("0より大きく10未満ですか?:" + inRange);
        System.out.println("0未満または10より大きいですか?:" + outOfRange);
    }
}

実行結果

現在の修行レベル:7
0より大きく10未満ですか?:true
0未満または10より大きいですか?:false

この例では、AND と OR の違いがとても分かりやすく表れています。範囲の内側を調べるときは AND、外側を調べるときは OR が使いやすいことが見えてきます。

偶数判定の例

次は、数値が偶数かどうかを調べる例です。これは剰余演算子 % と比較演算子 == を組み合わせる代表的なパターンです。

ファイル名:Lesson09_4.java

public class Lesson09_4 {
    public static void main(String[] args) {
        int trainingCount = 15;
        boolean isEven = trainingCount % 2 == 0;

        System.out.println("修行回数:" + trainingCount);
        System.out.println("偶数回ですか?:" + isEven);
    }
}

実行結果

修行回数:15
偶数回ですか?:false

trainingCount % 2 は、2で割った余りです。余りが 0 なら偶数、0 でなければ奇数です。こうして、演算結果も条件判定に使えることが分かります。

論理演算の応用例

最後に、boolean型の値そのものを組み合わせて判定する例を見てみます。修行場の開放状況と体調の準備の組み合わせを判定します。

ファイル名:Lesson09_5.java

public class Lesson09_5 {
    public static void main(String[] args) {
        boolean trainingRoomOpen = true;
        boolean bodyReady = false;

        boolean canPractice = trainingRoomOpen && bodyReady;
        boolean shouldRest = !trainingRoomOpen || !bodyReady;

        System.out.println("本格修行を始められる?:" + canPractice);
        System.out.println("今日は休息を優先する?:" + shouldRest);
    }
}

実行結果

本格修行を始められる?:false
今日は休息を優先する?:true

ここでは boolean型の変数をそのまま AND や OR や NOT に組み合わせています。trainingRoomOpen と bodyReady の両方が true でなければ canPractice は true になりません。一方、どちらかが整っていなければ shouldRest は true になります。

このように、boolean型の値そのものを材料にして、さらに複雑な判断を作れるようになるのが大事なポイントです。

比較演算子と boolean型の関係を図で整理

条件文は、比較して終わりではなく、その結果が boolean型になるところまでがセットです。

下図は、2つの値を比較演算子で比べた結果が、true または false の boolean値になる流れを示したものです。たとえば score >= 60 のような条件式があり、その結果が 合格 か 不合格 かの判定札として表れるイメージです。比較と boolean型のつながりを理解するのに役立ちます。

↓クリックすると拡大表示されます。

この図から分かること

この図を見ると、比較演算子はただ比べて終わるのではなく、最終的に true または false という boolean値を返す仕組みだと分かります。条件式と boolean型が直結していることが、つかみやすくなります。

AND・OR・NOT の関係を図で整理

下図は、2つの条件が AND、OR、NOT によってどのように組み合わされ、最終的な判定が変わるのかを示したものです。両方そろったときだけ進める条件、どちらかが不足したら休む条件、といった修行判定の流れとして見ることで、論理演算子の役割が理解しやすくなります。

この図から分かること

この図を見ると、複数の条件をどう組み合わせると最終判定がどう変わるのかが分かります。AND は厳しい条件、OR は広めの条件、NOT は反転と整理できるので、論理演算子の使い分けがしやすくなります。

条件文とboolean型を理解すると、プログラムに判断力が生まれる

Javaの条件文と boolean型は、プログラムに ただ動く 以上の力を与えてくれます。値を比較し、その結果を true と false で持ち、さらに論理演算子で組み合わせることで、かなり柔軟な判断ができるようになります。年齢判定、合格判定、範囲チェック、偶数判定、複数条件の組み合わせは、その基本形です。

ドラゴンボールの修行でも、ただ技をくり返すだけではなく、今の状態を見て進むか止まるかを決めることが大切です。Javaでも同じで、条件を見て正しく判断できるようになると、コードが一気に実用的になります。