論理演算子
これまで数値の比較や文字列の比較を行ってきましたが、何れも1つの関係式だけでした。これを、複数繋げる(且つ、やまたはなど)こともできます。関係式を2つ繋げる時に使用するのが論理演算子です。
論理演算子 目次
1.2つの関係式を繋げるには
これまでは、AよりBが大きい場合、AとBが等しい場合、などの比較をしてきましたが、これを2つ組み合わせた場合、例えば「性別が女性であり、かつ年齢が20才以上」などのように2つの関係式を繋げる時には「論理演算子」というものを使います。
論理演算子には次のものがあります。
論理演算子 | 意味 |
---|---|
&& または & | かつ(AND条件) |
|| または | | または(OR条件) |
! | 反対(NOT条件) |
^ | 片方だけがtrue(XOR条件) |
1-1 && または &(論理積)
2つの関係式を&&または&で繋ぐ場合、2つの関係式を「かつ」で結ぶことになります。これは論理積(AND条件)とも言い、両方の関係式がtrueの時だけ、結果がtrueになります。どちらか一方でもfalseだと、結果もfalseになります。図にすると次の様になります。
Aという条件とBという条件がお互いtrueの場合(2つの円が重なり合う斜線部分)のみ、結果がtrueとなります。
package pac01; public class HelloWorld { public static void main(String[] args) { String strSex = "女"; int intAge = 21; // strSex(性別)が"女"であり、かつintAge(年齢)が20以上 System.out.println(strSex.equals("女") && intAge >= 20); } } --------------------------------------------------------------- true
①strSexが”女”であること、②intAgeが20以上であること、という2つの条件があり、①と②が両方ともtrueの時だけ、「strSex.equals(“女”) && intAge >= 20」という関係式はtrueになります。
例えばintSexが”女”ではない場合や、intAgeが20未満の場合、またはその両方である場合、先の結果はfalseになります。
1-2 || または |(論理和)
2つの関係式を||または|で繋ぐ場合、2つの関係式を「または」で結ぶことになります。これは論理和(OR条件)とも言い、両方の関係式のどちらかがtrueであれば、結果がtrueになります。両方ともfalseだと、結果もfalseになります。図にすると次の様になります。
Aという条件とBという条件の内どちらか片方でも(両方でも)trueの場合(2つの円それぞれに加え、重なり合う部分も含めた斜線部分)は、結果がtrueとなります。
package pac01; public class HelloWorld { public static void main(String[] args) { String strSex = "女"; int intAge = 19; // strSex(性別)が"女"であるか、またはintAge(年齢)が20以上 System.out.println(strSex.equals("女") || intAge >= 20); } } -------------------------------------------------------------- true
①strSexが”女”であること、を満たしているので②intAgeが20以上であること、は満たしていなくても、「strSex.equals(“女”) || intAge >= 20」という関係式はtrueになります。
intSexが”女”ではなくて、かつintAgeが20未満の場合は、先の結果はfalseになります。
1-3 !(論理否定)
ある関係式をの反対や、ある関係ではない、という場合は関係式の頭に「!」(エクスクラメーションマーク)を付けます。これを論理否定(NOT条件)とも言い、元々の関係式がtrueならばfalseに、falseならばtrueになります。図にすると次の様になります。
Aという条件がtrueの場合は結果がfalseに(円以外の斜線部分)なります。
package pac01; public class HelloWorld { public static void main(String[] args) { String strSex = "女"; int intAge = 19; // strSex(性別)が"女"ではない System.out.println(!strSex.equals("女")); } } -------------------------------------------------------------- false
①strSexが”女”であることの反対、ということになるので、strSexは”女”ですから結果はfalseになります。
intSexが”女”ではない場合、先の結果はtrueになります。
1-4 ^(排他的論理和)
2つの関係式を^で繋ぐ場合、2つの関係式を排他的に「または」で結ぶことになります。これは排他的論理和(XOR条件)とも言い、両方の関係式のどちらかがtrueであれば、結果がtrueになります。両方ともtrueもしくはfalseだと、結果もfalseになります。図にすると次の様になります。
Aという条件とBという条件の内どちらか片方がtrueの場合(2つの円それぞれに対して、重なり合う部分も除いた斜線部分)は、結果がtrueとなります。両方ともtrueの場合はfalseになります。
package pac01; public class HelloWorld { public static void main(String[] args) { String strSex = "女"; int intAge = 19; // strSex(性別)が"女"であるか、またはintAge(年齢)が20以上 System.out.println(strSex.equals("女") || intAge >= 20); } } -------------------------------------------------------------- true
①strSexが”女”であること、を満たしており、②intAgeが20以上であること、は満たしていないので、「strSex.equals(“女”) ^ intAge >= 20」という関係式はtrueになります。
両方ともtrueもしくはfalseの場合、先の結果はfalseになります。
2.真偽値一覧
各論理演算子の真偽値の一覧は次の様になります。真はtrue、偽はfalseのことです。
2-1 && 論理積
条件A | 条件B | &&の結果 |
---|---|---|
真 | 真 | 真 |
真 | 偽 | 偽 |
偽 | 真 | 偽 |
偽 | 偽 | 偽 |
2-2 || 論理和
条件A | 条件B | ||の結果 |
---|---|---|
真 | 真 | 真 |
真 | 偽 | 真 |
偽 | 真 | 真 |
偽 | 偽 | 偽 |
2-3 ! 論理否定
条件A | !の結果 |
---|---|
真 | 偽 |
偽 | 真 |
2-4 ^ 排他的論理和
条件A | 条件B | ^の結果 |
---|---|---|
真 | 真 | 偽 |
真 | 偽 | 真 |
偽 | 真 | 真 |
偽 | 偽 | 偽 |
最近のコメント