package cond;
public class If3 {
public static void main(String[] args) {
int age = 14;
if (age <= 7) {
System.out.println("미취학");
}
if (age >= 8 && age <= 13) { // 8 ~ 13 : 초등학생
System.out.println("초등학생");
}
if (age >= 14 && age <= 16) { // 14 ~ 16 : 중학생
System.out.println("중학생");
}
if (age >= 17 && age <= 19) { // 17 ~ 19 : 고등학생
System.out.println("고등학생");
}
if (age >= 20) { // 20 ~ : 성인
System.out.println("성인");
}
}
}
이 코드는 다음과 같은 단점이 있다.
if
문을 통한 조건 검사도 모두 실행해야 한다.age <= 7
을 통해 나이가 이미 8살이 넘는 다는 사실을 알 수 있다. 그런데 바로 다음에 있는 “초등학생”을 체크하는 조건에서 age >= 8 && age <= 13
라는 2가지 조건을 모두 수행한다. 여기서 age >= 8
이라는 조건은 이미 앞의 age <= 7
이라는 조건과 관련이 있다. 결과적으로 조건을 중복 체크한 것이다.이런 코드에 else if
를 사용하면 불필요한 조건 검사를 피하고 코드의 효율성을 향상시킬 수 있다.
else if
문은 앞선 if
문의 조건이 거짓일 때 다음 조건을 검사한다. 만약 앞선 if
문이 참이라면 else if
를 실행하지 않는다.
if (condition1) {
// 조건 1이 참일 때 실행되는 코드
} else if (condition2) {
// 조건 1이 거짓이고 조건 2가 참일 때 실행되는 코드
} else if (condition3) {
// 조건 2가 거짓이고 조건 3이 참일 때 실행되는 코드
} else {
// 모든 조건이 거짓일 때 실행되는 코드
}
쉽게 이야기해서 이렇게 전체 if
문을 하나로 묶는다고 보면 된다. 이렇게 하면 특정 조건이 만족하면 해당 코드를 실행하고 if
문 전체를 빠져나온다. 특정 조건을 만족하지 않으면 다음 조건을 검사한다. 여기서 핵심은 순서대로 맞는 조건을 찾아보고, 맞는 조건이 있으면 딱 1개만 실행이 되는 것이다.
참고로 else
는 생략할 수 있다.
if (condition1) {
// 조건 1이 참일 때 실행되는 코드
} else if (condition2) {
// 조건 1이 거짓이고, 조건 2가 참일 때 실행되는 코드
}
package cond;
public class If4 {
public static void main(String[] args) {
int age = 14;
if (age <= 7) { // ~ 7 : 미취학
System.out.println("미취학");
} else if (age <= 13) { // 8 ~ 13 : 초등학생
System.out.println("초등학생");
} else if (age <= 16) { // 14 ~ 16 : 중학생
System.out.println("중학생");
} else if (age <= 19) { // 17 ~ 19 : 고등학생
System.out.println("고등학생");
} else { // 20 ~ : 성인
System.out.println("성인");
}
}
}
if(age <= 7)
의 조건이 참이다. “미취학”을 출력하고 전체 if
문 밖으로 나간다.
if(age <= 7)
의 조건이 거짓이다. 다음 조건으로 넘어간다.
else if(age <= 13)
의 조건이 참이다. “초등학생”을 출력하고 전체 if
문 밖으로 나간다.
if(age <= 7)
의 조건이 거짓이다. 다음 조건으로 넘어간다.
else if(age <= 13)
의 조건이 거짓이다. 다음 조건으로 넘어간다.
else if(age <= 16)
의 조건이 거짓이다. 다음 조건으로 넘어간다.
else if(age <= 19)
의 조건이 거짓이다. 다음 조건으로 넘어간다.
만족하는 조건 없이 else
까지 왔다 else
에 있는 “성인”을 출력하고 전체 if
문 밖으로 나간다.