개발/JAVA

[JAVA 기초] 조건문 - if문

hubaek 2024. 1. 30. 01:10

자바 기초에 대해서 복습하다가 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문을 쓰더라도 조건문에서 저런식으로 조건을 적을 수 있다는 것을 알게 되었다.