Java 速習チュートリアル

Java の条件式における論理演算子

1. 論理演算子による条件の組み合わせ

論理演算子を使用することで、複数の条件を組み合わせたり、条件の結果を反転させたりすることができます。これらは ifelseelse if と組み合わせて使用され、より複雑な意思決定ロジックを構築するために不可欠です。

  • && (AND) - すべての条件が真(true)である必要があります
  • || (OR) - 少なくとも1つの条件が真(true)である必要があります
  • ! (NOT) - 条件の結果を反転させます(true は false に、false は true になります)

2. 論理積 (&&)

両方の条件が共に真である必要がある場合は、AND (&&) を使用します。

2.1 AND 演算子のコード例

ab より大きく、かつ ca より大きいかどうかをテストします。

int a = 200;
int b = 33;
int c = 500;

if (a > b && c > a) {
  System.out.println("両方の条件が真です");
}

3. 論理和 (||)

少なくとも1つの条件が真であればよい場合は、OR (||) を使用します。

3.1 OR 演算子のコード例

ab より大きい、または ac より大きいかどうかをテストします。

int a = 200;
int b = 33;
int c = 500;

if (a > b || a > c) {
  System.out.println("少なくとも一方の条件が真です");
}

4. 論理否定 (!)

条件の結果を反転させたい場合は、NOT (!) を使用します。

4.1 NOT 演算子のコード例

ab より大きくない(つまり a > b が偽である)かどうかをテストします。

int a = 33;
int b = 200;

if (!(a > b)) {
  System.out.println("a は b より大きくありません");
}

5. 実践例:アクセス権限のチェック

実際のプログラムにおいて、論理演算子はアクセス制御(アクセスコントロール)によく利用されます。例えば、システムへのアクセスを許可するための特定の要件を考えてみましょう。

「ログイン済みであること」が必須であり、その上で「管理者(アドミン)である」か、あるいは「高いセキュリティクリアランス(レベル1または2)を持っている」必要があります。

5.1 アクセス制御のコード例

boolean isLoggedIn = true;
boolean isAdmin = false;
int securityLevel = 3; // 1 = 最高レベル

// ログインしており、かつ(アドミンである、またはセキュリティレベルが2以下)であるか判定
if (isLoggedIn && (isAdmin || securityLevel <= 2)) {
  System.out.println("アクセスが許可されました");
} else {
  System.out.println("アクセスが拒否されました");
}

// securityLevelを変更して異なる結果をテストしてみてください:
//
// securityLevel 1 = アクセス許可
// securityLevel 2 = アクセス許可
// securityLevel 3 = アクセス拒否
// securityLevel 4 = アクセス拒否
//
// もし isAdmin = true であれば、アクセスは許可されます。

このように論理演算子を組み合わせることで、複雑なビジネスルールを1つの条件式で簡潔に表現できるようになります。特に &&|| を混ぜて使う場合は、括弧 () を使って評価の優先順位を明確にすることが、バグを防ぐための重要なポイントです。