Skip to main content Link Search Menu Expand Document (external link) Copy Copied

else if의 사용과 기능

else ifif문과 함께 사용되는 조건문으로, if문과 같이 조건식을 정의할 수 있다. 이를 범위 조건문이라고 부르며, 이는 switch문과 달리 조건을 범위로 지정할 수 있기 때문이다.

int hidden = 3;

if (hidden > 3){
    System.out.println("3보다 높습니다.");
}else if(hidden < 3){
    System.out.println("3보다 작습니다.");
}else{
    System.out.println("3입니다.");
}

else if의 효과와 성능

때때로 개발자들이 가독성 향상을 목표로 모든 else if문을 if문으로 대체하는 것을 볼 수 있다. 그런데 이렇게 하면 어떤 변화가 있는지, 그리고 이 변화가 성능에 어떤 영향을 미치는지 알아보자.

기능적 차이

if문을 사용하면, else ifelse문은 해당 if문의 결과에 따라 실행 여부가 결정된다. 특히 else문의 경우는 조건식의 연산이 필요 없다.

int a = 1;
String result = "";

if(a == 1){
    result = "정답 일치함";
}else{
    result = "정답 일치하지 않음";
}
int a = 1;
String result = "";

if(a == 1){
    result = "정답 일치함";
}
if(a != 1){
    result = "정답 일치하지 않음";
}

else if문도 이런 흐름에 따라 수행된다. if문을 두 번 사용하면 두 개의 if문의 조건식이 항상 연산되지만, else if문을 사용하면 첫 번째 if문이 참일 경우 else if문의 조건식은 검사하지 않는다.

int arNum = {1,2,3,4};
int cnt = 0;

for(int i = 0; i < arNum.length; i++){
    if(arNum[i] < 0){
        // 첫번째 로직
        cnt++;
    }else if(arNum[i] < 1){
        // 두번째 로직
        cnt++;
    }
}

// cnt = 4;
int arNum = {1,2,3,4};
int cnt = 0;

for(int i = 0; i < arNum.length; i++){
    if(arNum[i] < 0){
        // 첫번째 로직
        cnt++;
    }
    if(arNum[i] < 1){
        // 두번째 로직
        cnt++;
    }
}

// cnt = 7;

속도의 차이

위에서 설명한 것처럼 else if문은 연산을 덜 수행하므로 일반적으로 더 빠른 성능을 보인다. 이를 직접 측정한 결과도 else if가 더 빠른 것으로 나타났다. 이 실험은 여러 차례 반복하여 평균값으로 결과를 비교하였고, 여전히 else if가 빠르다는 결과를 얻었다.