단락 평가 (Short-Circuit Evaluation)
단락 평가는 논리 연산에서 전체 결과가 이미 결정된 경우, 나머지 조건을 평가하지 않는 방식입니다.
주로 &&(AND), ||(OR) 연산에서 사용되며, 불필요한 연산을 줄이고 안전한 코드 실행을 보장하는 역할을 합니다.
단락 평가 동작
AND 연산 (&&)
첫 번째 조건이 false이면 전체 결과는 false이므로, 뒤의 조건은 평가하지 않습니다.
A && B
→ A가 false이면 B는 실행되지 않음
OR 연산 (||)
첫 번째 조건이 true이면 전체 결과는 true이므로, 뒤의 조건은 평가하지 않습니다.
A || B
→ A가 true이면 B는 실행되지 않음
단락 평가 예시
int[] arr = new int[5];
int j = 10;
if (j < 5 && arr[j] == 1) {
// 실행되지 않음 (안전)
}
위 코드에서는 j < 5가 false이므로 arr[j]는 평가되지 않습니다.
따라서 배열 범위를 벗어나더라도 예외가 발생하지 않습니다.
반면,
if (arr[j] == 1 && j < 5) {
// 예외 발생 가능
}
이 경우 arr[j]가 먼저 실행되기 때문에 IndexOutOfBoundsException이 발생할 수 있습니다.
단락 평가 활용
- 배열 범위 체크
- null 체크
- 비용이 큰 연산 제어
if (i < arr.length && arr[i] == target)
if (obj != null && obj.method())
if (isValid() && expensiveOperation())
결론
조건식은 왼쪽부터 평가되며, 결과가 결정되면 이후 조건은 실행되지 않습니다.
따라서 조건문의 순서는 단순한 코드 스타일이 아니라 안정성과 성능에 직접적인 영향을 줍니다.
'CS' 카테고리의 다른 글
| @PathVariable vs @RequestParam (0) | 2025.05.17 |
|---|---|
| [Spring boot] Gradle Toolchains (3/3) (0) | 2025.05.06 |
| [Spring boot] Gradle Toolchains (2/3) (0) | 2025.05.05 |
| [Spring boot] Gradle Toolchains (1/3) (0) | 2025.05.04 |
| [CS] HTTP 상태 코드 (0) | 2025.03.14 |