CodeGym /コース /JAVA 25 SELF /論理型 boolean と論理演算

論理型 boolean と論理演算

JAVA 25 SELF
レベル 3 , レッスン 3
使用可能

1. 論理データ型: boolean

すでに見たとおり、Java には非常に便利な演算子 — if-else があります。括弧内の条件が真であれば一方のブロックを、偽であればもう一方のブロックを実行します。

真か偽かの評価になる式を扱いやすくするために、Java には特別な型 — boolean が用意されています。この型の変数が取れる値は 2 つだけ: true(真)と false(偽)です。

それ以外の値を boolean 型の変数に代入することはできません。コンパイラが許しません。

boolean 型変数の例:

boolean isAdult = true;
boolean hasMoney = false;
boolean 型変数の宣言例

boolean 型の変数が取れる値は truefalse の 2 つだけ。以上!テストの結果とほぼ同じで、つまり「通った」か「落ちた」かです。

2. 比較演算

そんな単純な型が何の役に立つのでしょうか。boolean の本領は、論理式を組み立てるときに発揮されます。通常は比較演算子を使って作ります。

演算子 意味 結果
== 等しい
a == b
true または false
!= 等しくない
a != b
true または false
> より大きい
a > b
true または false
< より小さい
a < b
true または false
>= 以上
a >= b
true または false
<= 以下
a <= b
true または false

例:

int age = 20;
boolean isAdult = age >= 18;   // true (20 は 18 以上)
boolean isTeenager = age >= 13 && age < 18; // false (20 は 18 未満ではない)
boolean isEven = age % 2 == 0; // true (20 は 2 で割り切れる)

ここでは isAdulttrue になります。20 はまさに「成人」と言える年齢だからです。

重要ポイント 1:

2 文字から成る演算子は分割して書いてはいけません。


a < = 10
speed > = max
age = = 18
time ! = 0
これは誤りの書き方です!演算子はつなげて書きます: <=>===!=

重要ポイント 2:

=> と =< という演算子はありません。あるのは <=>= だけです。a =< 3 と書くと、コードはコンパイルに失敗します。

重要ポイント 3:

Java では 18 < age < 65 のような表現は書けません。というのも、18 < age の結果は true または false であり、true を数値(65)と比較することはできないからです。型が異なります。

3. 論理演算

Java では 18 < age < 65 という式は書けません — 構文的に不正で、プログラムはコンパイルできません。

その代わり、次のように書けます:


(18 < age) AND (age < 65)
言葉で書いた論理式の例

もちろん、実際には単語の AND を使うのではなく、論理演算子を使います。Java には 3 つの論理演算子があります: AND(かつ)、OR(または)、NOT(否定)。

良い知らせ: かっこを使えば、任意の複雑さの論理式を構築できます。
悪い知らせ: Java では andornot といった単語の代わりに、C 系の記号を使います: &&||!

論理演算子 期待する表記 実際の表記
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

Java における論理演算子の使用例をいくつか示します:

読み替え 説明
(0 < a) && (a < 100)
(0 < a) and (a < 100) (0 < a)かつ(a < 100)
(!a) && (!b)
(not a) and (not b) (NOT a)かつ(NOT b)
!(!a || !b)
not((not a) or (not b)) NOT((NOT a) OR (NOT b))

4. 真理値表

論理演算を手短に確認しましょう。

AND 演算子

AND 演算子(かつ&&、論理積、コンジャンクションとも呼ばれます)。

結果
true && true true
true && false false
false && true false
false && false false

OR 演算子

OR 演算子(または||、論理和、ディスジャンクションとも呼ばれます)。

結果
true || true true
true || false true
false || true true
false || false false

NOT 演算子

NOT 演算子(否定!、反転)。

結果
! true false
! false true

便利な恒等式:

結果
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b

5. 論理演算の例: and, or, not

「AND(かつ)」演算は && で表します

両方の条件が真のときにのみ、結果は真になります。

int age = 16;
boolean hasTicket = true;
boolean canAttend = age >= 14 && hasTicket; // true(16 は 14 より大きく、かつチケットがある)

年齢が 14 以上で、しかもチケットがあるなら、どうぞお入りください!

「OR(または)」演算は(||)で表します

少なくとも一方の条件が真であれば、結果は真になります。

boolean isAdmin = false;
boolean isModerator = true;
boolean canEdit = isAdmin || isModerator; // true(どちらか一方でも true なら編集できる)

管理者 または モデレーターなら、どうぞボタンを押してください!

「NOT(否定)」演算は(!)で表します

否定は、真を偽に、偽を真に反転させます。

boolean isWeekend = false;
boolean shouldGoToWork = !isWeekend; // true(週末でなければ働く)

週末ではないなら、起きる時間です!

組み合わせ: 条件はどれだけ複雑にしてもよい

論理演算はいくらでも組み合わせられます(やり過ぎには注意)。明確さのために括弧を積極的に使いましょう。

例:

int age = 17;
boolean hasTicket = false;
boolean isVip = true;

boolean canGo = (age >= 18 && hasTicket) || isVip; // true(isVip = true だから)

ロジック: 成人かつチケット所持、または VIP なら入場可。VIP でない場合は、成人かつチケット所持のときだけ入場可。

1
タスク
JAVA 25 SELF, レベル 3, レッスン 3
ロック未解除
真実の探求 🧐
真実の探求 🧐
1
タスク
JAVA 25 SELF, レベル 3, レッスン 3
ロック未解除
試合の結果 ⚽
試合の結果 ⚽
1
タスク
JAVA 25 SELF, レベル 3, レッスン 3
ロック未解除
ピクニックの計画 🧺
ピクニックの計画 🧺
1
タスク
JAVA 25 SELF, レベル 3, レッスン 3
ロック未解除
室内の快適温度 🌡️
室内の快適温度 🌡️
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION