[JAVA] 논리 연산에서의 단락회로 평가

4622 단어 Java논리연산Java

논리 연산자를 사용한 연산에서 &&는 두 항이 모두 참이여야지만 true이고, ||하나의 항만 참이면 나머지 항이 참이든 거짓이든 상관없이 무조건 true가 된다.
그래서 자바에서 논리 곱 연산을 실행할 때 앞 항의 결과가 거짓이면 뒤 항은 살펴볼 필요가 없다고 여겨 실행이 되지 않는다. 논리 합 연산을 실행할 때도 마찬가지로 앞 항의 결과가 참이면 뒤 항은 살펴볼 필요가 없다고 여겨 실행이 되지 않는다. 다음 코드를 살펴보자

int i= 1;
int num =10;
boolean value = ((num=num+i) < 10) && ((i= i+2) <10);
//앞 항이 거짓이므로 뒷 항은 실행되지 않음
System.out.println(value); //false
System.out.println(num); // 11
System.out.println(i); //실행되지 않았으므로 그대로 1

value = ((num = num + 10) >10) || ((i=i+2) < 10);
//앞 항이 참이므로 뒷 항은 실행되지 않음
System.out.println(value); //true
System.out.println(num); // 21
System.out.println(i); //실행되지 않았으므로 그대로 1

이렇게 논리 곱 연산과 논리 합 연산시 뒤 항이 실행되지 않는 것을 단락 회로 평가(Short Circuit Evaluation:SCE)라고 한다.

좋은 웹페이지 즐겨찾기