論理演算子

これまで数値の比較や文字列の比較を行ってきましたが、何れも1つの関係式だけでした。これを、複数繋げる(且つ、やまたはなど)こともできます。関係式を2つ繋げる時に使用するのが論理演算子です。

論理演算子 目次

  1. 2つの関係式を繋げるには
  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 ^の結果

コメントを残す

サブコンテンツ

このページの先頭へ