👄

【Java】論理演算子を用いた条件式

2024/01/09に公開

Rubyの時もそうでしたが、条件式のおおよその意味が分かっていてもいざ条件を重ねて作ろうとした際に苦労することが多かったので、複雑な条件式の場合の例をここにメモしていこうと思います。

論理演算子の種類

&&

かつ(両方の条件が満たされた場合にtrue)

||

または(どちらか片方の条件さえ満たされればtrue)

論理演算子

Javaの論理演算子は、複数の条件を組み合わせて論理的な条件式を評価するために使用されます。主な論理演算子には、次の3つがあります。

1.論理積(AND)演算子(&&)

両方の条件が真である場合、全体の条件が真となります。
例:もしageが29以上でかつmonthが2なら

public class LogicalAndExample {
    public static void main(String[] args) {
        int age = 30;
        int month = 2;

        if (age >= 29 && month == 2) {
            System.out.println("ageが29以上で、かつmonthが2です。");
        } else {
            System.out.println("条件に合致しません。");
        }
    }
}

この例では、ageが29以上でかつmonthが2の場合に、特定のメッセージが出力されます。それ以外の場合は、別のメッセージが出力されます。

2.論理和(OR)演算子(||)

どちらか一方または両方の条件が真である場合、全体の条件が真となります。
例:もしnameが浜口またはnameが濱口なら

public class LogicalOrExample {
    public static void main(String[] args) {
        String name = "濱口";

        if (name.equals("浜口") || name.equals("濱口")) {
            System.out.println("nameが浜口または濱口です。");
        } else {
            System.out.println("条件に合致しません。");
        }
    }
}

この例では、nameが"浜口"または"濱口"の場合に、特定のメッセージが出力されます。それ以外の場合は、別のメッセージが出力されます。

equalsメソッド

上記のように文字列の比較をする際はequalsメソッドを使用します。

文字列型の変数.equals(比較相手の文字列)

※「比較相手の文字列」には、文字列のリテラルや変数を指定できる。
※「文字列型の変数」と「比較相手の文字列」が等しい内容であれば、この式全体がtrueに化ける。

3.否定(NOT)演算子(!)

条件の真偽を逆転させます。
例:ageが29以上でないならば

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

        if (!(age >= 29)) {
            System.out.println("ageが29以上ではありません。");
        } else {
            System.out.println("ageが29以上です。");
        }
    }
}

この例では、ageが29以上でない場合に、特定のメッセージが出力されます。否定演算子は条件を逆転させるため、!(age >= 29)は「ageが29以上でない」という意味になります。

&&と||の組み合わせ

下記は、&&(論理積)および||(論理和)演算子を組み合わせて、「hpが100未満かつpoisonがfalse」または「hpが100以上かつpoisonがtrue」の条件を表す例文です。

public class CombinedLogicalOperatorsExample {
    public static void main(String[] args) {
        int hp = 80;
        boolean poison = true;

        if ((hp < 100 && !poison) || (hp >= 100 && poison)) {
            System.out.println("条件に合致します。");
        } else {
            System.out.println("条件に合致しません。");
        }
    }
}

この例では、hpが100未満かつpoisonがfalse、またはhpが100以上かつpoisonがtrueの場合に、「条件に合致します。」というメッセージが出力されます。それ以外の場合は、「条件に合致しません。」というメッセージが出力されます。

条件式の短絡評価

先ほどの例であった論理積(AND)演算子(&&)のように両方が一致しないといけない条件文で、Javaは前半部分を評価した時点でfalseの場合は、続く後半部分については無視をし評価を行いません。このようなふるまいを短絡評価といいます。

参考

スッキリわかるJava入門第4版
https://tech.pjin.jp/blog/2020/12/28/java_05_01_02_logical_operators/

Discussion