공부함/JAVA

[JAVA] 논리연산자 - 단락회로평가 (short circuit evaluation)

솔헬레나 2023. 5. 31. 15:03

논리연산에서 논리곱과 논리합의 결과값 반환은 아래와 같다. 

논리 곱(&&)인 경우 두 항의 결과가 모두 true인 경우에만 true를 반환한다.
논리 합(||)인 경우 두 항의 결과 중 1개라도 true이면 true를 반환한다.

 

조건문에서 위와 같이 논리 곱과 합으로 여러개의 항을 실행할 때 모든 연산 항이 실행되지 않아도 결과를 평가하여 도출할 수 있는데.

논리곱과 논리합 시 이후의 항이 실행되지 않고도 결과가 도출되는 경우를 단락회로평가라고 한다.

어떤 조건문에서 조건이 2개 이상일 때 첫번째 항의 평가만으로 결정되어 조건문을 실행하거나 실행되지 않는 경우를 의미한다.

 

- 조건이 2가지 이상일 때 논리곱(&&)인 경우,

첫항의 조건이 false면 두번째 항을 실행하지 않는다.

int sampleNum = 4 ; 
if( sampleNum == 1 && sampleNum < 9 ) { // false
    System.out.println(sampleNum); // 이 부분이 수행되지 않는다. 
}

ㄴ위 경우 sampleNum == 1에서 false가 나왔기 때문에 다음 항인 sampleNum 이 9보다 작은지 체크하지 않고 false를 반환한다.
따라서 조건문 안의 출력문이 실행되지 않는다.

 

 

- 조건이 2가지 이상일 때 논리합(||)인 경우

, 첫 항의 조건이 true이면 두번째 조건 항을 실행하지 않는다. ( true이므로 )

int sampleNum = 1 ; 
if( sampleNum == 1 || sampleNum < 9 ) { // true
	System.our.println(sampleNum);	// 이 부분이 수행된다. 
}
결과 : 1

ㄴ 이 경우 sampleNum == 1 이 true이므로 sampleNum 이 9보다 작은지 체크하지 않아도 true 를 반환한다. 

따라서 조건문 안의 출력문이 실행된다.