Java 기초 연산자 - SCE(Short-Circuit Evaluation)
728x90
기본 환경
JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 |
목표
자바의 SCE를 이해한다.
SCE를 통해 가독성 있는 코드가 무엇인지 이해한다.
코드
package ex03operator;
public class E05ShortCircuitEvaluation {
/*
SCE(Short-Circuit Evaluation)
: 하나의 조건검사만으로 결과를 알수 있는 경우 Java컴파일러는
뒤에 조건을 수행하지 않고 건너뛰게 된다. 이경우 변수의 값이
변경되는 코드가 있다면 실행되지 않으므로 주의해야한다.
*/
public static void main(String[] args) {
int num1 = 0, num2 = 0;
boolean result;
/*
&&(논리and)의 경우 둘중 하나만 false이면 false를 반환하므로
첫번째 조건이 false이면 두번째 조건을 실행(검사)하지 않는다.
*/
result = (num1 += 10) < 0 && (num2 += 10) > 0;
System.out.println("result =" + result);
System.out.println("num1 =" + num1 + " num2 = " + num2);
/*
||(논리or)의 경우 둘중 하나만 true 이면 true를 반환하므로
첫번째 조건이 true이면 뒷문장을 실행하지 않는다.
*/
result = (num1 += 10) > 0 || (num2 += 10) > 0;
System.out.println("result =" + result);
System.out.println("num1 =" + num1 + " num2 = " + num2);
/*
num2 는 초기값이 0을 유지하게 된다. 만약 num2의 값이 프로그램에
영향을 미치게 된다면 이 부분은 유의해야한다.
*/
}
}
앞에서 했던 논리 연산자와 이어지는 내용이다. SCE란 자바가 코드를 컴파일 할 때 AND논리 일경우 앞이 false일 경우 뒤를 검사하지 않고 OR연산자도 마찬가지로 앞이 True이면 뒤를 검사하지 않는것이다. 앞에 코드처럼 검사하는 부분의 연산식을 넣을 경우 개발자가 원하는 결과와 다른 결과가 나올 수 있음을 유의하자
결과 값
다음 결과 값을 보면 논리 연산자에서 계산한 결과가 적용되지 않았음을 볼 수 있다.
'Java > Java_기초부터 _끝까지' 카테고리의 다른 글
Java 기초 연산자 - 비트 연산자 (0) | 2020.10.06 |
---|---|
Java 기초 연산자 - 증감 연산자 (0) | 2020.10.06 |
Java 기초 연산자 - 논리 연산자 (0) | 2020.10.05 |
Java 기초 연산자 - 비교 연산자 (0) | 2020.10.05 |
Java 기초 연산자 - 복합대입 연산자 (0) | 2020.10.05 |