[JAVA 기초] 조건문 - if문
자바 기초에 대해서 복습하다가 if문에 대해서 사소하지만 놓쳤던 부분이 있어서 포스팅하려고 합니다.
먼저 if문에 대해서 설명하면
// if문의 형식
if(condition) {
// 조건이 참 일때 실행되는 코드
}
(condition) 부분에 조건식이 들어가고 해당 부분이 참(true)이면, {}안의 코드가 실행되는 것이다.
이번에 공부하면서 놓쳤던 부분은 else if 문이다.
예시로, 아래의 조건일때,
- 7세 이하일 경우 : 미취학
- 8세 이상 13세 이하일 경우 : 초등학생
- 14세 이상 16세 이하일 경우 : 중학생
- 17세 이상 19세 이하일 경우 : 고등학생
- 20세 이상일 경우 : 성인
원래 내가 하던 방식은 아래와 같다.
package cond;
public class If1 {
public static void main(String[] args) {
int age = 14;
if (age <= 7) {
System.out.println("미취학");
} else if (age >= 8 && age <= 13) {
System.out.println("초등학생");
} else if (age >= 14 && age <= 16) {
System.out.println("중학생");
} else if (age >= 17 && age <= 19) {
System.out.println("고등학생");
} else {
System.out.println("성인");
}
}
}
하지만 이런식은 조건문 코드가 너무 길어진다.
특히 나이가 8살인 초등학생이라면, 첫번째 조건인 age <=7 을 통해 나이가 8살이 넘는다는 사실을 알지만,
다음 조건인 age >= 8 && age <= 13 라는 2가지 조건을 또 수행하게 된다.
age>=8이라는 조건은 앞의 age <=7이라는 조건과 관련있고 결과적으로 조건을 중복체크하여 코드 효율성에 안 좋게 된다는 사실을 깨달았다.
코드 효율성을 개선한 코드
package cond;
public class If2 {
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 {
System.out.println("성인");
}
}
}
사소한 포인트 이지만, 조건문의 범위 차이가 있다.
age = 13인 경우, if <=7 조건이 거짓이므로 다음 조건문을 보게되고 다음 조건문이 참이여서, 초등학생을 출력하고 if문이 종료될 것이다.
이미 앞의 조건문에서 8이상이라는 사실을 알 수 있어서 굳이 age >= 8 이라는 조건문을 붙이지 않고 age <= 13 으로만 한다.
if문으로 구성되어있는 것이 else if문보다 효율이 떨어지지만, else if문을 쓰더라도 조건문에서 저런식으로 조건을 적을 수 있다는 것을 알게 되었다.