본문 바로가기

코딩/JAVA 공부

논리 연산자 &, |와 &&, ||의 차이

지금까지 코딩하면서 & 와 && 에 차이가 있는지 모르고있었다,

보통 && 를 많이 써서 따라 사용했는데, 어느날 & 를 써보니 결과가 똑같이 나와 둘이 같은거구나? 라고 생각했다.

Udemy에서 강의를 보다 알게됬는데 두 연산자는 다른 연산자이다!

결론만 놓고 보자면 같기는 하다.

int i = 10;
int j = 15;
System.out.println(i < 5 && j++ > 5);  // false

int a = 10;
int b = 15;
System.out.println(a < 5 & b++ > 5);  // false

이렇게 동일한 연산을 두 논리 연산자에 넣었을 때 그 결과는 같다.

그런데 j 와 b 에서 차이가 발생한다.

 

&& 연산자를 사용 했을 때 그 결과가 거짓이면 뒤쪽 연산을 진행하지 않는다.

하지만 & 연산자는 결과에 상관없이 모든 연산을 진행한다.

결국 j = 15 로 그대로지만,  b는 16으로 ++ 연산자에 의해 1 증가한다.

 

| 와 || 의 관계도 마찬가지.

 

코드를 작성할 때 & 연산자와 && 연산자를 혼용해서 사용하면 읽기가 힘들어질 것 이다.

가장 읽기 편한 방식은

++ 같은 연산은 논리 연산자를 사용하기 전에 진행하고 &&나 || 논리 연산자를 사용하는 것 이다.