연산자 |
이름 |
설명 |
---|---|---|
&& |
논리 AND |
둘 다 true일 때만 true |
` |
` |
|
! |
논리 NOT |
true를 false로, false를 true로 |
양쪽 조건이 모두 true일 때만 결과가 true입니다.
int age = 25;
boolean isMember = true;
if (age >= 18 && isMember) {
System.out.println("성인 회원입니다.");
}
A |
B |
A && B |
---|---|---|
true |
true |
true |
true |
false |
false |
false |
true |
false |
false |
false |
false |
양쪽 조건 중 하나라도 true이면 전체 결과는 true입니다.
boolean isAdmin = false;
boolean isManager = true;
if (isAdmin || isManager) {
System.out.println("접근 허용");
}
| A | B | A || B |
|—––|—––|––––|
| true | true | true |
| true | false | true |
| false | true | true |
| false | false | false |
boolean 값을 반전시킵니다.
boolean isLogin = false;
if (!isLogin) {
System.out.println("로그인이 필요합니다.");
}
A |
!A |
---|---|
true |
false |
false |
true |
복잡한 조건은 여러 논리 연산자를 조합하여 사용할 수 있습니다.
int age = 30;
boolean isMember = true;
boolean hasCoupon = false;
if ((age >= 18 && isMember) || hasCoupon) {
System.out.println("할인 가능");
}
자바는 단축 평가를 수행합니다.
이는 불필요한 평가를 생략하여 성능을 높이고, 예외를 방지합니다.
if (false && methodCall()) {
// methodCall()은 호출되지 않음
}
if (true || methodCall()) {
// methodCall()은 호출되지 않음
}
이 기능은 null pointer 예외 방지에 유용하게 사용됩니다.
String name = null;
if (name != null && name.length() > 0) {
System.out.println("이름 있음");
}
name != null이 false이면 name.length()는 평가되지 않으므로 예외가 발생하지 않습니다.
복잡한 조건일수록 괄호로 조건의 우선순위를 명확히 표현하는 것이 좋습니다.
if ((score >= 70 && score <= 100) || isAdmin) {
System.out.println("접근 가능");
}
연산자 |
의미 |
설명 |
---|---|---|
&& |
논리 AND |
둘 다 true여야 전체 true |
` |
` |
|
! |
논리 NOT |
true → false, false → true |