マンガで分かる Java入門講座

第4章 数値変数と演算子
4-8. 演算子3 論理演算子

真偽値を計算する「論理演算子」を紹介します。

● 論理演算子

 「論理演算」はbooleanの値同士を計算する方法です。「論理演算子」は、そのための記号です。

 以下、論理演算子を示します。

表)論理演算子
演算子使い方名前計算内容
&a & bAND(論理積)aもbもtrueならtrue、違うならfalse
|a | bOR(論理和)aかbがtrueならtrue、違うならfalse
^a ^ bXOR(排他的論理和)aかbの一方のみがtrueならtrue、違うならfalse
!!aNOT(否定)aがfalseならtrue、trueならfalse

 以下、使い方の例です。

説明)&演算
int a = 3;
boolean b = (0 < a) & (a <= 10);
        ↓
      true & true
        ↓
      &の左右が両方ともtrueなので
      計算結果はtrue
        ↓
      変数bにtrueの値が入る

ソースコード)&演算
int a = 3;
boolean b = (0 < a) & (a <= 10);
System.out.println(b);  // 「true」と出力

説明)!演算
boolean a = true;
boolean b = ! a;
       ↓
      ! true
       ↓
      !の右側がtrueなので
      計算結果はfalse
       ↓
      変数bにfalseの値が入る

ソースコード)!演算
boolean a = true;
boolean b = ! a;
System.out.println(b);  // 「false」と出力

● ショートサーキット演算子

 論理演算子の中には、「ショートサーキット演算子(短絡演算子)」と呼ばれる特殊な演算子があります。

 ショートサーキット演算子は、以下の2つです。

表)論理演算子2 ショートサーキット演算子
演算子使い方計算内容
&&a && baもbもtrueならtrue、違うならfalse
ただしaがfalseならbは評価しない
||a || baかbがtrueならtrue、違うならfalse
ただしaがtrueならbは評価しない

 &演算、|演算では、左辺が決まれば、結果が自動的に決まる場合があります。ショートサーキット演算子では、その際に右辺の評価を行いません。

 そうすることで、不要な計算を行わないようにして無駄な処理を省きます。

 まずは、&演算の場合です。&演算では、左辺がfalseの場合は、右辺が何であれ結果がfalseになります。

 ショートサーキット演算子「&&」では、こういった場合に、右辺を評価しません。以下、その例を示します。

説明)&&演算
int a = -1;
boolean b = (0 < a) && (a <= 10);
       ↓
      false && (a <= 10);
       ↓
      &&の左がfalseなので右を判定せず
      計算結果はfalse
       ↓
      変数bにfalseの値が入る

ソースコード)&&演算
int a = -1;
boolean b = (0 < a) && (a <= 10);
System.out.println(b);  // 「false」と出力

 次は、|演算の場合です。|演算では、左辺がtrueの場合は、右辺が何であれ、結果がtrueになります。

 ショートサーキット演算子「||」では、こういった場合に、右辺を評価しません。以下、その例を示します。

説明)||演算
int a = -1;
boolean b = (a < 0) || (a <= 10);
       ↓
      true || (a <= 10);
       ↓
      ||の左がtrueなので右を判定せず
      計算結果はtrue
       ↓
      変数bにtrueの値が入る

ソースコード)||演算
int a = -1;
boolean b = (a < 0) || (a <= 10);
System.out.println(b);  // 「true」と出力

この講座のマンガ部分は「箱人形マンガ(Box Comic) 」で作成しています。
作成:2013/05/20  更新:2018/03/01  [Permalink]