논리 연산

논리 연산

이 문서에서는 논리 연산에 대해서 살펴본다.

논리 연산이란

논리 연산은 논리와 논리 간의 연산을 말한다. 즉, 여러 판정 값들을 이용하여 최종 판정을 내리는 연산이라고 볼 수 있다.

논리 연산자

논리 연산자의 종류는 다음과 같다.

연산자

설명

&&

논리 AND 연산

||

논리 OR 연산

!

논리 NOT 연산

논리 연산자 데모 1

import java.lang.*;

public class LogicalOperatorExample1 {
    public static void main(String[] args){
        int age = 15;
        
        boolean teen = age >= 14 && age < 20;
        
        System.out.println("청소년인가요?");
        System.out.println(teen);
    }
}

위의 예제를 실행하면 다음과 같은 결과가 나온다.

청소년인가요?
true

청소년의 기준을 14살 이상 20살 미만이라고 했을 때 다음과 같이 표시할 수 있다.

이는 한 번의 비교로 불가능하기 때문에 두 번으로 나누어서 진행해야 한다.

  1. 나이가 14살 이상인가?

  2. 나이가 20살 미만인가?

1번과 2번 모두를 만족해야 하므로 논리 AND 연산을 수행해야 한다.

  • 나이가 14살 이상 그리고 20살 미만인가?

논리 연산은 대화하는 방식과 유사하기 때문에 말로 먼저 정리한 뒤 코드로 옮기는 것이 작성하기에 유리하다.

논리 AND 연산 진리표

A

B

A && B

true

true

true

true

false

false

false

true

false

false

false

false

논리 연산 데모 2

import java.lang.*;

public class LogicalOperatorExample2 {
    public static void main(String[] args){
        int age = 21;
        
        boolean isFree = age < 8 || age >= 65;
        
        System.out.println("지하철 요금이 무료인가요?");
        System.out.println(isFree);
    }
}

실행 후 출력 결과는 다음과 같다.

지하철 요금이 무료인가요?
false

지하철 무임승차 기준이 8세 미만 65세 이상이라고 했을 때 그림으로 표시하면 다음과 같다.

한 번에 비교로 파악할 수 없기 때문에 두 번 비교를 수행해야 한다.

  1. 나이가 8세 미만인가?

  2. 나이가 65세 이상인가?

1번과 2번을 동시에 만족할 수 없다. 따라서 논리 OR 연산이 필요하다.

  • 나이가 8세 미만 또는 65세 이상인가?

논리 OR 연산 진리표

A

B

A ||B

true

true

true

true

false

true

false

true

true

false

false

false

논리 연산 데모 3

import java.lang.*;

public class LogicalOperatorExample2 {
    public static void main(String[] args){
        int age = 21;
        
        boolean isFree = !(age >= 8 && age < 65);
        
        System.out.println("지하철 요금이 무료인가요?");
        System.out.println(isFree);
    }
}

2번 예제와 동일하게 실행되는 예제이다. 차이점은 isFree를 계산하는 방식에 있다.

평소에 하는 대화와 연결지어 생각하면 이해하기 쉽다.

무료이다=유료가아니다무료이다 = 유료가 아니다

무료 아니면 유료라고 했을 때, 무료라는 것은 유료가 아니라는 것과 같은 의미를 가진다. 따라서 식에 부정 연산을 섞어서 반대의 의미를 가지게 할 수 있다.

//다음 두 식은 같은 식이다.

boolean isFree = !(age >= 8 && age < 65);

boolean isFree = age < 8 || age >= 65;

논리를 반대로 뒤집어서 연산시키는 연산자를 논리 부정(NOT) 연산자라고 부르며, !를 앞에 붙여 표시한다. 논리 부정 연산자는 단항 연산자이다.

논리 부정 연산 진리표

A

!A

true

false

false

true

Last updated