논리 연산자 && ||
조건식을 연결할 때 사용하는 연산자
|| (OR 결합) 피연산자 중 어느 한 쪽이 true이면 true를 결과로 얻는다.
&& (AND 결합) 피연산자 양쪽 모두 true이어야 true를 결과로 얻는다.
x | y | x || y | x && y |
true | true | true | true |
true | false | true | false |
false | true | true | false |
false | false | false | false |
1) x는 10보다 크고 (and) 20보다 작다.
'x > 10'와 'x < 20'가 '그리고(and)'로 연결된 조건이므로 다음과 같이 쓸 수 있다.
'x > 10 && x < 20'
'x > 10'는 '10 < x'와 같으므로 다음과 같이 쓸 수도 있다.
보통은 변수를 왼쪽에 쓰지만 이런 경우 가독성측면에서 보면 아래의 식이 더 나을 수 있다.
'10 < x && x < 20' (10 < x < 20)
2) i는 2의 배수 또는 3의 배수이다.
어떤 수가 2의 배수라는 얘기는 2로 나누었을 때 나머지가 0이라는 뜻이다.
그래서 나머지 연산의 결과가 0인지 확인하면 된다.
'또는'으로 두 조건이 연결되었으므로 논리 연산자 '||' (or)를 사용해아한다.
' i % 2 == 0 || i % 3 == 0 '
i의 값이 8일 때, 위의 식은 다음과 같은 과정으로 연산된다.
i % 2 == 0 || i % 3 == 0
-> 8 % 2 == 0 || 8 % 3 == 0
-> 0 == 0 || 2 == 0
-> true || false
-> true
3) i는 2의 배수 또는 3의 배수지만 6의 배수는 아니다.
이전 조건에 6의 배수를 제외하는 조건이 더 붙었다.
6의 배수가 아니어야 한다는 조건은 ' i % 6 != 0' 이고, 이 조건을 '&&(AND)'로 연결해야 한다.
' ( i % 2 == 0 || i % 3 == 0 ) && i % 6 != 0 '
위의 식에 괄호를 사용한 이유는 '&&'rk '||' 보다 우선순위가 높기 때문이다.
만일 괄호를 사용하지 않으면 '&&'를 먼저 연산한다. 다음의 두 식은 동일하다.
' i % 2 == 0 || i % 3 == 0 && i % 6 != 0 '
' i % 2 == 0 || (i % 3 == 0 && i % 6 != 0 )'
4) 문자 ch는 숫자 ('0' ~ '9') 이다.
사용자로부터 입력된 문자가 숫자('0' ~ '9')인지 확인하는 식은 다음과 같이 쓸 수 있다.
'0' <= ch && ch <= '9' >> true
유니코드에서 문자 '0' 부터 '9'까지 연속적으로 배치되어 있기 때문에 가능한 식이다.
문자 '0'부터 '9'까지 유니코드는 10진수로 다음과 같다.
5) 문자 ch는 대문자 또는 소문자이다.
4)의 경우와 마찬가지로 문자 'a'부터 'z'까지, 그리고 'A' 부터 'Z'까지도 연속적으로 배치되어
있으므로 문자 ch가 대문자 또는 소문자인지 확인하는 식은 다음과 같이 쓸 수 있다.
('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')
논리 부정 연산자 ! (not) (단항연산자)
ture는 false 로, false는 true로 바꾼다.
x | y |
ture | false |
false | true |
boolean b = true;
!!b -> !!true -> !false -> true
'자바의 정석 - 기초편' 카테고리의 다른 글
조건문 if 문과 if-else문 (0) | 2022.08.02 |
---|---|
조건 연산자, 대입 연산자 (0) | 2022.08.02 |
비교 연산자, 문자열의 비교 (0) | 2022.08.01 |
반올림 Math.round(), 나머지 연산자 (0) | 2022.08.01 |
사칙 연산자, 산술 변환 (0) | 2022.08.01 |