본문 바로가기
Java

if,else or switch,case

by 완기 2021. 5. 21.
728x90
반응형

오늘 개발을 진행을 하면서 상당히 많은 경우에 수에 따라 분기 처리를 해야 하는 경우가 생겼다.

 

나는 여느 날과 다름없이 if else를 떡칠했고, 코드도 상당히 보기 안좋았다.

 

그리고 성능도 if else가 더 좋다고 생각했다.

 

그 근거는 배타적인 if else문에서 1번째 조건이 아니면 2번째,

 

2번째 조건이 true라면 조건문을 빠져나가 다음 블록으로 코드가 실행되는 줄 알았다.

 

 

그러나 결과는 달랐다.

 

구글링을 해보니까 if else문은 조건에 대한 경우를 iterator 방식으로 순회한다.

 

즉, 조건에 일치하는 블록이 있어도 모든 if else를 순회한다는 이야기다.

 

나름의 이유를 생각해보면 and or 조건을 통해 추가적으로 부합하는 조건이 있을 수도 있어서 

 

다 순회하는 것 같았다. (물론 조건이 겹치게 코드를 작성하지 않는 게 베스트지만)

 

String msg = "hello";

	if(msg.startsWith("h")){
		System.out,println("1");
	}else if(msg.contains("o")|| msg.contains("e")){
		System.out,println("2");
	}

좀 극단적이긴 하지만 위와 같은 예시이다.

 

배타적으로 짜야하기 때문에 두 번째 else if에서 startWith~가 되어야 하지만 예시일 뿐이다.

 

 

어쨌든, if문은 추가적으로 조건을 포함할 수 있는 구문을 염두에 두고 개수만큼 순회를 한다.

 

그렇지만 switch case문은 case가 같으면 에러를 발생시키기 때문에, 이런 염려가 없다.

 

 

특정 조건에 대한 분기 처리라면 if else 문을

경우의 수로써 분기 처리라면 switch case문을 사용하는 게 좋겠다.

 

시간도 for문 10000번에 대해서 

switch case가 50% 정도 빨랐다.

 

참고:

 

switch와 if else 중 어떤 것을 써야하는가?

switch와 if else 중 어떤 것을 써야하는가? switch구문은 변수를 입력 받아 미리 정해놓은 여러 값들과의 일치여부를 판단하여 switch문 내의 control flow를 결정한다. if else구문은 boolean의 결과 값을 내

aahc.tistory.com

 

728x90
728x90

댓글