논리 연산자 &,&& 와 |,||의 차이를 알아보자.
간략하게 설명하면 논리 연산자 &&,||처럼 두개가 사용되면 먼저 왼쪽의 식을 계산하여 boolean 값이 true여야 오른쪽의 식을 계산한다.
&,|처럼 논리 연산자가 하나만 쓰인 경우 왼쪽의 식이 false여도 오른쪽의 식을 무조건 검사한다.
코드로 살펴보자
결과
x = 0, y = 1
x = 0, y = 2
a = 0, b = 1
a = 0, b = 2
결론
위의 코드에서 알 수 있 듯이 &&,|| 의 경우 앞의 식 즉 왼쪽의 식을 우선적으로 검사하고 그 값이 true를 반환하였을 때 오른쪽의 식은 연산에 수행되지 않는 것을 확인 할 수 있다.
하지만 &,|의 경우 우선적으로 검사된 식이 true를 반환해도 오른쪽의 식을 무조건 검사한다.
그리고 식에서 사용된 변수의 증감연산자는 그 식이 false를 출력해도 값이 증감 되어 출력하면 증감 된 값이 나온다.
ex)10줄의 ++y == 3이 거짓이라도 ++y는 수행이 되어 println 찍었을 때 증가 된 값이 출력된다.