初心者向けのJava講座です。一緒にJavaを勉強しませんか?
はじめてのJava入門初心者向けの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は評価される |