본문 바로가기
프로그래밍/JAVA

초보 자바 프로그래밍(11) - 논리연산자 (Logical Operators)

by 머니테크리더 2023. 5. 1.
반응형

논리 연산자 대표 이미지
논리 연산자 대표 이미지

 

 

논리연산자 (Logical Operators)

논리 연산자는 논리적인 조건을 만족하는지 검사하는 연산자입니다. 자바에서는 다음과 같은 논리 연산자를 제공합니다.

 

1. AND 연산자 (&&) : 두 피연산자가 모두 true일 때 true를 반환합니다. 하나라도 false라면 false를 반환합니다.

boolean a = true;
boolean b = false;
boolean result = (a && b); // false

 

2. OR 연산자 (||) : 두 피연산자 중 하나라도 true라면 true를 반환합니다. 두 피연산자가 모두 false일 때 false를 반환합니다.

boolean a = true;
boolean b = false;
boolean result = (a || b); // true

 

3. NOT 연산자 (!) : 피연산자의 논리값을 반대로 바꿉니다. true면 false를, false면 true를 반환합니다.

boolean a = true;
boolean result = !a; // false

 

 

논리 연산자는 논리적인 조건 검사에 많이 사용됩니다. 예를 들어, 다음과 같은 코드를 작성하여 나이가 18세 이상이고 성별이 남자인 경우에만 투표를 할 수 있도록 할 수 있습니다.

int age = 20;
char gender = 'M';
if (age >= 18 && gender == 'M') {
    System.out.println("투표가 가능합니다.");
} else {
    System.out.println("투표가 불가능합니다.");
}

 

논리 연산자를 사용하여 여러 개의 조건을 함께 검사하고, 논리 연산자를 조합하여 복잡한 조건 검사를 수행할 수 있습니다. 주의할 점은, 논리 연산자는 반드시 boolean 타입의 피연산자에 대해서만 사용해야 한다는 것입니다. 그렇지 않으면 컴파일 오류가 발생합니다.

 

연산자 우선순위

논리 연산자는 논리적인 조건을 검사하는 연산자로, 논리값(boolean)을 피연산자로 사용합니다. 이 때, 논리 연산자의 피연산자는 우선 순위가 높은 산술 연산자나 비교 연산자와 같은 다른 연산자보다 먼저 계산되어야 합니다.

산술연산자 > 비교연산자 > 논리연산자 > 대입연산자

 

논리연산자 우선순위

자바에서의 논리 연산자의 순서는 NOT(!)가 가장 높은 우선순위를 가지며, 그 다음으로 AND(&&)가, 그리고 OR(||)가 가장 낮은 우선순위를 가집니다. 이 순서를 바꾸고 싶다면 괄호()를 사용하여 연산 순서를 변경할 수 있습니다.

NOT(!) > AND(&&) > OR(||)

 

 

예를 들어, 다음 코드에서 AND 연산자가 OR 연산자보다 먼저 계산되기 때문에, AND 연산이 먼저 실행된 후 OR 연산이 실행됩니다.

boolean a = true;
boolean b = false;
boolean c = true;
if (a && b || c) {
    System.out.println("조건이 참입니다.");
} else {
    System.out.println("조건이 거짓입니다.");
}

위 코드에서는, (a && b)가 먼저 계산되어 false를 반환하고, 그 다음에 c와 OR(||) 연산이 수행되어 true를 반환합니다. 따라서, "조건이 참입니다."가 출력됩니다.

 

논리 연산자의 우선순위를 변경하고 싶다면 괄호를 사용하여 연산 순서를 변경할 수 있습니다. 예를 들어, 다음 코드는 OR 연산이 먼저 계산되도록 괄호를 사용하여 우선순위를 변경한 예시입니다.

boolean a = true;
boolean b = false;
boolean c = true;
if (a || (b && c)) {
    System.out.println("조건이 참입니다.");
} else {
    System.out.println("조건이 거짓입니다.");
}

위 코드에서는, b와 c의 AND(&&) 연산이 먼저 수행되어 false를 반환하고, 그 다음에 a와 OR(||) 연산이 수행되어 true를 반환합니다. 따라서, "조건이 참입니다."가 출력됩니다. ​

 

논리 연산자를 사용할 때, 피연산자의 우선순위를 고려하여 괄호를 사용하는 것이 좋습니다. 그렇지 않으면, 의도치 않은 결과가 발생할 수 있습니다.

 

 

댓글