ShortCircuitEvaluation (lazy Evaluation) 은 연산의 특성중 하나로, 연산의 효율 및 속도를 높이기 위해 불필요한 연산을 생략하는 행위입니다.
아래 코드를 봅시다.
int num1 = 0;
int num2 = 0;
boolean result;
result = ((num1 += 10) < 0) && ((num2 += 10) > 0);
result = ((num1 += 10) > 0) || ((num2 += 10) > 0);
System.out.println(num1);
System.out.println(num2);
위 코드는 && 연산자와 || 연산자를 이용하여 조건의 참,거짓을 판별하여 변수 result 에 대입하고, num1 과 num2 의 값을 출력하는 코드입니다.
여기에서 num1의 값과 num2의 값은 각각 20, 0으로 출력이 됩니다. 이 결과로 부터 알 수 있는 사실은 num2 의 연산은 이루어지지 않는다는 것 입니다.
그 이유는 SCE( ShortCircuitEvaluation ) 라고 부르는 연산의 특성 때문입니다. 다음은 그 특성입니다.
&& 왼쪽 피연산자의 값이 false 라면 오른쪽 피연산자는 연산하지 않는다.
|| 왼쪽 피연산자의 값이 true 라면 오른쪽 피연산자는 연산하지 않는다.
이러한 특성때문에 num2 += 10 의 연산은 이루어지지 않았습니다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
[ANDROID / JAVA] Activity 간 화면 전환 (0) | 2023.05.11 |
---|---|
[ANDROID / JAVA] Inflation (0) | 2023.05.09 |
[ANDROID / JAVA] 상속과 생성자 (0) | 2023.05.08 |
[ANDROID / JAVA] 변수 (1) | 2023.05.08 |
[ANDROID / JAVA] 상속 (inheritance) (0) | 2023.05.08 |