본문 바로가기
Java

논리 연산자 and, or, not

by KDW999 2022. 12. 30.

논리 값에 대한 연산처리를 하는 연산자

 

1. and 연산자 -> && 

System.out.println(false && true); // return false

&&연산자는 양 옆이 다 true여야만 true를 출력한다.

 

2. or 연산자 -> ||

System.out.println(true || false); // return true

||연산자는 양 옆 중 하나만 true여도 true를 출력한다.

 

3. not 연산자 -> !

System.out.println(!true); // return false

!연산자는 반대를 출력해준다.

 

4. 연산 규칙

- 양 옆은 논리만

- and : 연산 과정 중 false가 존재하면 무조건 false

- or : 연산 과정 중 true가 존재하면 무조건 true

- 해당 논리 뒤에 연산은 실행하지 않음

int a = 0;
System.out.println(false && (++a > 0));
System.out.println(a);

해당 식에선  (++a >) 0은 논리가 아니지만 (++a >) 0가 true를 출력하기 때문에 가능하다.

이클립스 상에선 뒤에 (++a > 0) 부분에 노란 밑줄이 그이는데 해당 부분이 dead code기 때문이다.

dead code = 있든 없든 연산에 영향을 미치지 않아서 실행되지 않는 죽은 코드

출력문에서 &&연산식 앞에 이미 false가 있기 때문에 뒤에 뭐가 오든 상관없이 false가 출력된다.

그렇기에 뒤에 연산식은 실행되지 않는 데드 코드가 된다.

(++a > 0)가 실행되지 않았기 때문에 a를 출력하면 0이 나오게 된다.

댓글