HOME> Javaアプリケーション講座> 演算子>論理演算子 論理和(||)

論理演算子とは

関係演算子が一つの条件に対してtrue falseを返すのに対して
論理演算子は複数の条件を評価したいときに使います

では、ここで論理演算子を紹介します

論理演算子 論理和(||)

真偽値同士の足し算と考えると理解しやすい演算子です。

この演算子は論理積(&&)が2つの条件がtrueの時全体がtrueになるのに 対し、
論理和(||)は片方だけでもtrueになれば全体がtrueと評価されます

たとえば

int a = 1, b = 2, c = 3; を参考に考えて見ます。

(a < b) || (b < c)  これの出力結果は trueになります。
(a < b) || (b > c)  これも出力結果は  trueになります。

つまり、(a < b)がtrueになるので右オペランドの結果に関わらずtrueになります。
では、サンプルプログラムを見ていきます。

サンプルプログラム(Sample23.java)

class  Sample23{
    public static void main(String args[]){
  int x = 10,y = 20, z = 30;

    System.out.println("int x = 10, y = 20, z = 30");
   
    System.out.println("true になるとき");

    System.out.println("x < y || y < z =" + ((x < y) || (y < z)));
    System.out.println("x > y || y < z =" + ((x > y) || (y < z)));
    System.out.println("x < y || y > z =" + ((x < y) || (y > z)));

System.out.println("---------------------------"); System.out.println("false になるとき"); System.out.println(" x > y || y > z =" + ((x > y) || (y > z))); } }

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行してみます。

結果を見てもわかると思います。
ようするに条件が1つでもtrueになれば全体もtrueになります。

なお、論理和(||)は左オペランドがtrueの場合は、右オペランドの値に
関わらず、全体の結果がtrueになることがここで決まるので右オペランドは評価されません。

もし、左オペランドの評価に関わらず右オペランドを評価したいときは

ビット演算子(|)を使います。

では、またサンプルプログラムで確認したいと思います

サンプルプログラム(Sample23_1.java)

class  Sample23_1{

  public static void main(String args[]){

   int x = 10, y = 20, z = 30;

boolean b1 = (x < y) || (++x < z); System.out.println(b1); System.out.println(x);
} }

プログラムをコピーする場合すべて選択をクリックしてください。

サンプルプログラム(Sample23_2.java)

class  Sample23_2{

  public static void main(String args[]){

   int x = 10, y = 20, z = 30;

boolean b1 = (x > y) || (++x < z); System.out.println(b1); System.out.println(x);
} }

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

あなたのWEBサイトをレベルアップさせるには【ドメイン】!
     ■ドメイン取るならお名前.com■

サンプルプログラム(Sample23_3.java)

class  Sample23_3{

  public static void main(String args[]){

   int x = 10, y = 20, z = 30;

boolean b1 = (x < y) | (++x < z); System.out.println(b1); System.out.println(x);
} }

プログラムをコピーする場合すべて選択をクリックしてください。

サンプルプログラム(Sample23_4.java)

class  Sample23_4{
    public static void main(String args[]){
   
   int x = 10, y = 20, z = 30;

boolean b1 = (x > y) | (++x < z); System.out.println(b1); System.out.println(x);
} }

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

4つのサンプルプログラムを作成しました。
コンパイル・実行してみます。

Sample23_1だけがxの値が10です。
右オペランドを評価していないのがわかります。

それは、論理和( || )の時は左オペランドがtrueの時は全体がtrueになるので
右オペランドを評価しないからです。したがって、Sample23_1だけがxをインクリメント
していないので 10になります。

まとめ

||
a || b
aがtrueのときはbも評価されない
||
a || b
aがfalseのときはbは評価される
|
a | b
aがtrueのときはbは評価される
|
a | b
aがfalseのときもbは評価される

ページのトップへ戻る