Programming Language/JAVA

논리 연산자, 논리 부정 연산자

Glory-L 2023. 1. 17. 10:51

논리 연산자 && , ||

 

조건식을 연결할 때 사용하는 연산자

 

|| (OR 결합) : 피연산자 중 어느 한 쪽이 true이면 true

 

&& (AND 결합) : 피연산자 양쪽 모두 true이어야 true 

 

 

1) x는 10보다 크고 20보다 작다.

 

x > 10 && x < 20 // 방법 1. 가독성이 조금 떨어 질 수 있음

10 < x && x < 20 // 방법 2. 가독성이 조금 더 좋음 

// 어떤 방법을 쓰던지 상관은 없지만 이왕이면 가독성 좋게 코드를 짜는 것을 선호하자.

 

 

2) i는 2의 배수 또는 3의 배수이다.

 

// 표현 방법

i%2==0 || i%3==3 


// 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의 배수는 아니다. 

 

 

// 표현식 

( i%2==0 || i%3==0 ) && i%6 != 0

// 위의 식에서 괄호를 쳐주는 이유
// '&&'가 '||'보다 우선순위가 높기 때문이다.
// 만약 괄호를 쓰지 않는다면 '&&'를 먼저 연산한다. 

// 아래 두 식은 동일하다.

i%2==0 || i%3==0 && i%6 != 0

i%2==0 || (i%3==0 && i%6 != 0)

 

 

4) 문자 ch는 숫자 ('0' ~ '9')이다.

 

// 확인 방법
char ch = '1'; // ch 변수 선언

'0' <= ch && ch <= '9'

// 유니코드에서 문자 '0'부터 '9'까지는 연속적으로 배치되어 있기 때문에 가능한 식이다.

 

* 문자 유니코드 

 

문자 '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
문자코드 48 49 50 51 52 53 54 55 56 57

 

 

5) 문자 ch는 대문자 또는 소문자이다.

 

* 4번 예시와 마찬가지로 문자 'a'부터 'z'까지, 'A' 부터 'Z' 까지 연속적으로 배치되어 있기 때문에 문자 ch가 대문자 또는 소문자인지 확인하는 방법은 아래와 같다.

 

('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')

// 4번의 예시와 마찬가지

 

 

 

 


 

 

논리 부정 연산자  ' !  '

 

true를 false로, false를 true로 바꾼다. 

 

 

boolean b = true;

!!b // !!true -> !false -> true

// 문자 ch가 소문자가 아니다.

ch < 'a' || ch > 'z' // 방법 1

!('a' <= ch && ch <= 'z') // 논리부정 연산자를 이용한 방법 2

 

 

 


 

 

 

[ 자바의 정석 - 기초 유튜브 강의 영상 참고 ]

 

https://www.youtube.com/watch?v=AdFrJizyF80&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=30