연산자 |
명칭 |
설명 |
예시 |
---|---|---|---|
&& |
논리 AND |
두 조건이 모두 true일 때만 true |
(a > 0 && b > 0) |
` |
` |
논리 OR |
|
! |
논리 NOT |
조건의 반대 값 반환 |
!(a > 0) |
& |
비트 AND / 논리 AND (모두 평가) |
둘 다 true일 때 true, 모두 평가 |
(a > 0 & b > 0) |
` |
` |
비트 OR / 논리 OR (모두 평가) |
둘 중 하나가 true면 true, 모두 평가 |
^ |
논리 XOR |
한 쪽만 true일 때 true |
(a > 0 ^ b > 0) |
앞 조건이 false이면 뒤 조건은 평가하지 않음 (short-circuit)
전체 결과는 모든 조건이 참이어야 true
int a = 10;
int b = 5;
if (a > 0 && b > 0) {
System.out.println("두 수 모두 양수입니다.");
}
앞 조건이 true이면 뒤 조건은 평가하지 않음 (short-circuit)
전체 결과는 하나라도 참이면 true
int age = 15;
if (age < 13 || age > 65) {
System.out.println("우대 대상입니다.");
}
조건의 참/거짓을 반전
boolean isLogin = false;
if (!isLogin) {
System.out.println("로그인이 필요합니다.");
}
자바에서는 &, | 연산자를 boolean 조건에도 사용할 수 있지만, &&, ||와는 다릅니다.
연산자 |
short-circuit 여부 |
사용 예 |
---|---|---|
&& |
예 |
조건이 false면 이후 생략 |
& |
아니오 |
조건이 false라도 이후 평가 |
// short-circuit AND
if (x != 0 && 10 / x > 1) { ... } // 안전
// 일반 AND (&)는 모두 평가 -> 에러 가능
if (x != 0 & 10 / x > 1) { ... } // x가 0이면 예외 발생
양쪽 피연산자가 서로 다를 때만 true
boolean a = true;
boolean b = false;
System.out.println(a ^ b); // true
System.out.println(true ^ true); // false
System.out.println(false ^ false); // false
자바에서는 다음과 같은 순서로 연산됩니다.
! (NOT)
&& (AND)
|| (OR)
괄호를 사용하여 우선순위를 명확히 하는 것이 좋습니다.
boolean result = true || false && false; // &&가 먼저 수행
// 위는 true || (false && false) -> true
boolean result2 = !(true && false); // NOT가 먼저 수행
// -> !(false) -> true
int age = 25;
boolean isStudent = false;
if (age >= 18 && !isStudent) {
System.out.println("성인 비학생입니다.");
}
연산자 |
설명 |
특징 |
---|---|---|
&& |
논리 AND |
모두 true일 때만 true |
` |
` |
|
! |
논리 NOT |
boolean 값을 반대로 |
& |
일반 AND (전체 평가) |
성능 손해 및 오류 가능성 있음 |
` |
` |
일반 OR (전체 평가) |
^ |
논리 XOR (서로 다르면 true) |
예외적 상황에서 사용 |