본문으로 건너뛰기
Advertisement

3.5 논리 연산자 (Logical Operator)

비교 연산의 결과나 논리값을 결합하여 더 복잡한 조건을 구성할 때 사용합니다. boolean 형(true/false)을 피연산자로 삼습니다.

1. 논리 연산자 (&&, ||)

  • && (AND, 그리고): 두 피연산자 양쪽 모두 true일 때만 결과값이 true가 됩니다. 둘 중 하나라도 falsefalse를 리턴합니다.
  • || (OR, 또는): 두 피연산자 중 한 쪽만 true라도 결과가 true입니다. 모두 false일 때만 false를 리턴합니다.
int x = 5;

// x가 0보다 크고(AND) 10보다 작다.
boolean result1 = (x > 0) && (x < 10); // true

// x가 0 미만이거나(OR) 10 초과이다.
boolean result2 = (x < 0) || (x > 10); // false

효율적인 연산 (Short Circuit Evaluation)

자바의 논리 연산은 식을 평가할 때 좌측에서 우측으로 넘어갑니다.

  • || 연산의 경우: 좌측 피연산자가 true이면, 이미 전체 결과가 true로 확정되므로 우측 식을 평가 (실행)조차 하지 않습니다.
  • && 연산의 경우: 좌측 피연산자가 false이면, 우측 조건의 참거짓 여부와 관계없이 거짓이므로 우측 식을 무시합니다.

따라서 빠른 실행을 위해, 연산 결과가 높은 확률로 판가름 나는 조건을 논리 연산의 좌측에 두는 것이 유리합니다.

2. 삼항 연산자 (? :)

삼항 연산자는 세 개의 피연산자를 필요로 하는 유일한 연산자로 주로 if문을 대신하여 짧게 표시할 때 쓰입니다. 조건식이 참일 때와 거짓일 때 반환되는 결과값이 다릅니다.

(조건식) ?(조건식이 true일 때 반환할 값) :(조건식이 false일 때 반환할 값)

int x = 10, y = 5;

// x가 y보다 크면 x의 값을 반환, 작으면 y의 값을 반환
int max = (x > y) ? x : y;

System.out.println(max); // 출력결과 10

삼항 연산자를 사용하면 코드를 간결하게 만들 수 있으나, 중첩하여 과도하게 사용할 경우 가독성이 오히려 떨어지게 되므로, 복잡한 곳에는 if - else 블록을 사용하는 것이 좋습니다.

Advertisement