[자바(JAVA)] And OR 연산자 &&, ||, &, |

AND&&&
OR|||
연산자가 하나있는것과 두개가 있는것의 차이는 무엇일까?

2개 짜리 &&와 || 연산자는 판단하면 멈춘다.

true 또는 flase 값을 가지는 조건식 A, B, C 가 있다고 가정할때.

A && B && C 의 경우
AND 연산자는 하나라도 거짓이면 결과가 거짓이된다.
그렇기 때문에 만약 A가 거짓이면 B 와 C를 확인하지 않고도 답은 이미 거짓이다.
ABC 순으로 판단하며 하나라도 거짓인 시점에서 && 연산자는 비교를 멈춘다.

A || B || C
반면 OR 연산자는 하나라도 참이면 전체 결과가 참이된다.
&& 와 같은 맥락에서 ABC 순서대로 하나라도 참인 시점에서 && 연산자는 비교를 멈춘다.

1 개 짜리 &와 | 연산자는 답이 나와도 끝까지 비교한다.

A | B | CA & B & C ABC 모두 판단한다.

그렇기 때문에 알고리즘 문제를 풀때는 조금이라도 더 빠른 2개짜리(||, &&)를 사용해야 한다.

아직 감이 오지 않는다면 코드 예시를 참고하자

int a =10;
if(a <9 & a++>10){
    a+=5;
}
System.out.println(a);
>>> 11

&연산자를 사용했기 때문에 조건식 모두를 판단하면서 a++ 가 수행되어 a값이 증가하였다.

int a =10;
if(a <9 && a++>10){
    a+=5;
}
System.out.println(a);
>>> 10

&& 연산자를 사용했기 때문에 a<9 (false) 이후 a++ 하는 부분이 실행되지 않았다.