Skip to content

java - short circuit이 뭘까?

&& 과 & || 과 | 의 차이

자바 tutorial document에서는 &&& 그리고, |||의 차이를 조건 연산자 및 bit 연산의 차이라고 알려준다1

사용 용도에서 차이가 나고 잇는데, if 구문 에서는 조건 연산자만 써야하고, bit끼리 연산할 때는 bit연산만 사용해야 할 것 같은 분위기가 나오고 있다. 사실 bit연산자도 if 구문에서 사용이 가능하다. 그 이유는 if 구문에는 조건 구문에 boolean 자료형만 허용해주기 때문이다.

그렇다면, 조건 구문에서 bit 연산자를 쓸 때와 조건 연산자를 쓸 때의 차이는 무엇일까?

🔌 드디어 나왔다 short circuit

short circuit은 합선이라는 용어인데, 컴퓨터 과학에서는 short circuit evaluation 이라고 하는 것 같다. 조건 연산의 결과가 충분히 판단되는 경우 뒤에 있는 조건 연산을 수행하지 않는 것을 의미한다.

예를 들자면 false && true의 결과와 false & false의 결과는 동일하게 false이다 0 * 1 = 0 이기 때문이다. 하지만 short circuit evaluation에 따라 &&를 사용한 오른쪽 피연산자의 계산식은 끝내 계산이 되지 않는다. 앞에서 false를 반환했기 때문에 계산식을 충분히 판단이 되었기 때문이다. 이것이 && 과 & || 과 | 의 차이 이다.

더 자세한 설명을 하자면 int i = 0 일때, i < 0 && i++ < 11 의 결과는 false이다. 하지만 뒤에 i++는 하나의 operation이 끝나도, i 변수의 값은 증가가 되지 않는다.


  1. Equality, Relational, and Conditional Operators, Bitwise and Bit Shift Operators java tutorial 

Comments