論理演算子について

Java

はじめに

プログラミングを学び始めると、if文を使った条件分岐で「思った通りに動かない…」と悩む場面がよくあります。条件式そのものは短いのに、なぜか結果が意図と違う。そんなときに大きく関わってくるのが 論理演算子 です。

論理演算子は、複数の条件を組み合わせて判断するときに欠かせない仕組みですが、最初は「&& と || の違いがわからない」「! って何を反転しているの?」と混乱しがちです。本記事では、初心者の方でもスッと理解できるように、日常の例や図解を交えながら論理演算子の基本をわかりやすく解説していきます。

読み終える頃には、条件分岐のモヤモヤが消えて、if文を書ける自信がぐっと上がるはずです。


論理演算子とは?

論理演算子とは、複数の条件を組み合わせて「真(true)か偽(false)か」を判断するための演算子です。
プログラミングでは、「A かつ B のときだけ実行」「A または B ならOK」「Aではないときに実行したい」といった状況がよくあります。このような判断をスマートに表現できるのが論理演算子です。

代表的な論理演算子は次の3つだけです。

  • AND(&&) … 両方の条件が真なら true
  • OR(||) … どちらかが真なら true
  • NOT(!) … 真偽を反転させる

この3つを理解するだけで、複雑に見える条件式もシンプルに読み解けるようになります。
次の章からは、それぞれを日常の例とコードを使って具体的に解説していきます。

AND(&&)の説明

AND(&&)は「両方の条件が真(true)のときだけ結果が true になる」論理演算子です。
日常の感覚で言うと「A かつ B」という意味に近く、2つ以上の条件を“両方満たす”場合に使います。

▼日常の例

  • 「雨が降っていない かつ 休みの日 → 散歩に行く」
  • 「年齢が18以上 かつ チケットを持っている → 入場できる」

どちらか一つでも条件を満たしていなければ false になる点がポイントです。

▼コード例(Java)

int age = 20;
boolean hasTicket = true;

// AND の例:両方が true の場合だけ実行
if (age >= 18 && hasTicket) {
    System.out.println("入場できます");
}

▼真理値表

条件A条件BA && B
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

両方 true のときだけ true になる、という仕組みがひと目で分かります。

OR(||)の説明

OR(||)は「どちらか一方でも真(true)であれば結果が true」になる論理演算子です。
日常の感覚では「A または B」という意味に近く、複数条件の“どれか一つが満たされればOK”という場面で使います。

▼日常の例

  • 「晴れ または 曇りなら公園に行く」
  • 「クレジットカード または 現金が使える店なら入る」

両方 false のときだけ false になるという点を覚えると理解しやすくなります。

▼コード例

boolean isSunny = false;
boolean isCloudy = true;

// OR の例:どちらかが true なら実行
if (isSunny || isCloudy) {
    System.out.println("公園に行けます");
}

▼真理値表

条件A条件BA || B
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

どちらか一つでも true なら結果も true になるのが OR の特徴です。

NOT(!)の説明

NOT(!)は「真偽値を反転する」ための論理演算子です。
簡単に言うと、true → false、false → true に変わります。

日常感覚だと「A ではない」という意味と近いのでイメージしやすいです。

▼日常の例

  • 「雨 ではない → 傘はいらない」
  • 「会員 ではない → 登録が必要」

▼コード例

boolean isRaining = false;

// NOT を使って false → true に反転
if (!isRaining) {
    System.out.println("傘はいりません");
}

!isRaining

  • isRaining が false → !false = true
    となるため、条件式が実行されます。

条件式のよくある間違い

論理演算子を使った条件式は、書き方を少し間違えるだけで意図しない動きをしてしまいます。ここでは、初心者が特につまずきやすいポイントを見ていきましょう。

AND と OR を混在させてしまう

AND(&&)と OR(||)を同時に使うと、条件が分かりにくくなります。

▼意図が伝わりにくい例

if (age >= 18 || hasTicket && isMember) {
    // 処理
}

この場合、どの条件が優先されるのか直感的に分かりません

カッコ()を使わずに優先順位を誤解する

論理演算子には優先順位があり、&&|| より先に評価されます。
意図を明確にするためにも、カッコを使って条件を整理することが大切です。

▼改善した例

if ((age >= 18 || hasTicket) && isMember) {
    // 会員で、かつ 年齢またはチケット条件を満たす
}

このように書くことで、条件の意味がはっきりします。

実践例:論理演算子を使った条件分岐

ここでは、実際によくあるシチュエーションを例に論理演算子を使ってみましょう。

例1:ログイン判定

条件

  • ID とパスワードが正しい
  • または 管理者権限を持っている
boolean isCorrectUser = true;
boolean isCorrectPassword = true;
boolean isAdmin = false;

// ログイン判定
if ((isCorrectUser && isCorrectPassword) || isAdmin) {
    System.out.println("ログイン成功");
} else {
    System.out.println("ログイン失敗");
}

このように、AND と OR を組み合わせることで実用的な条件分岐が書けるようになります。

例2:年齢チェック

int age = 15;

// 18歳未満なら警告表示
if (age < 18) {
    System.out.println("このサービスは利用できません");
}

ここに NOT を組み合わせると、別の書き方もできます。

if (!(age >= 18)) {
    System.out.println("このサービスは利用できません");
}

まとめ

本記事では、論理演算子の基本から実践的な使い方までを解説しました。

  • AND(&&):両方が true のときだけ true
  • OR(||):どちらか一方が true なら true
  • NOT(!):真偽を反転させる

論理演算子を正しく使えるようになると、条件分岐の可読性が上がり、プログラムの意図も伝わりやすくなります。最初は難しく感じるかもしれませんが、実際にコードを書きながら少しずつ慣れていくことが大切です。

次は、if文や比較演算子と組み合わせて使うことで、より実践的なプログラムが書けるようになります。ぜひあわせて学習してみてください。

コメント

タイトルとURLをコピーしました