포스트

자바 : 비교 연산자 한 개와 두 개의 차이


최근 코딩 테스트 준비하면서 알고리즘 문제를 풀고 있는데
특히 백준 웹 사이트에서 문제를 풀고 있다.
그런데 이 백준이 좋은 점은 다 풀고서 다른 사람의 풀이법을 볼 수 있다는 점인데
꼭 문제를 풀고 나면 나보다 더 빠른 시간, 혹은 더 적은 용량으로 풀어낸 사람 것을 보고 최적화해보려 한다.

여튼 그러다가 발견한 것이 &, | 비교연산자의 사용법 이었다.
기본적으로 &와 |를 두 번씩, &&, || 로 사용하는 것이 기본으로 알고 있었고 이외는 생각도 못했는데
누군가가 해당 연산자를 하나씩만 써서 문제를 통과했던 것이다.

그래서 구글링을 통해 아래 블로그에서 해당 내용을 발견했다.

https://live-everyday.tistory.com/180

정리하면

& 나 | 과 같이 연산자를 하나만 사용할 경우 앞선 조건에서 false로 연산이 도출되어도
그대로 끝나지않고 뒤의 조건까지 연산을 한다는 뜻이다

반대로 && 혹은 과 같이 사용하게 되면 앞선 조건이 false라면 그대로 연산이 끝나버린다.

ex)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int x = 1;
int y = 2;

if(x == 2 && ++y == 3) {}
  System.out.println(x + " " + y)
if (x == 1 & ++y == 3) {}
  System.out.println(x + " " + y)
if (x == 1 || ++y == 3) {}
  System.out.println(x + " " + y)
if (x == 1 | ++y == 3) {}
  System.out.println(x + " " + y)

// 결과
// && -> x = 1 / y = 2
// & -> x = 1 / y = 3
// || -> x = 1 / y = 3
// | -> x = 1 / y = 4





이전 블로그에서 옮겨짐

이 블로그는 저작권자의 CC BY 4.0 라이센스를 따릅니다.