본문 바로가기

JAVA Programming/4. if 문 & switch 문

[조건문] if 문 & switch 문

if문과 switch문은 조건문이기에 가장 중요한 문법 중 하나이다. 비록 둘의 차이를 놓고 보자면 

if문은 조건식이 참이면 실행하고 거짓이면 무시를 한다. 그러나 switch문은 입력된 값을 보고 특정위치로 가서 코드를 실행한다. 

그러므로 if문의 경우 점프테이블을 만드는데 걸리는 오버헤드는 없지만, 조건을 만족하냐 하지 않냐의 branch의 구조가 지속적으로 필요하다. 또한 switch문의 경우 if문과 반대로 조건을 만족하는지 안하는지가 아니라, 입력받은 값을 확인하는  구조만이 필요하다. 그러나 점프테이블을 만드는 오버헤드는 필요하다. 

 

결론: 조건의 수가 적을수록 if문, 조건의 수가 많을수록 switch문을 사용하는것이 유리하다.

 

먼저 간단하게 if문의 예시를 들어보겠습니다.

if문 예시1

if문의 경우 첫번째 조건문을 if로 사용하고 두번째, 세번째... 까지 else if를 사용한다. 이 외의 값을 조건문 처리하려면 else를 사용한다. 

위의 코드를 해석해보겠습니다. 먼저 char 자료형을 사용하여 gender에 'F'라는 문자를 저장시키고 조건에 gender가 'F'이면 if문 실행, 'F'가 아니면 else문 실행으로 코드를 짜보았다. 기본적으로 보이지만 가장 중요한 문법이니 유의하시길 바랍니다. gender에 'F'가 저장되어 있으니 실행결과 여성입니다. 가 출력되는걸 볼 수 있다. 

결과1

만약 gender에 'F'가 아닌 'F'가 아닌 다른 문자가 저장되어있었면 남성입니다라고 출력되었을 것이다.

이때 주의할 점이 있다. if문 조건은 앞에서 배운 비교 연산자인 ==, !=, >, <, >=, <=을 사용할 수 있습니다. =이 아니라 ==입니다.

이것들을 응용하여 하나의 예시를 더 들어보겠습니다.

if문 예시2

이번 예시는 나이에 따른 놀이동산 입장료에 대한 코드이다. 

내 나이 28을 입력하였을 때 아래와 같은 출력을 볼 수 있다.

결과2

다음은 switch문의 예시를 볼것입니다.

switch문 예시1

switch문의 경우 위의 month라는 정수형 숫자가 조건이 된다. month가 8이면 case문의 8이 있는 코드를 실행시키게 된다. case문 안의 코드를 보면 day라는 변수에 31이라는 숫자를 담게된다. 담기위에선 위에 변수를 선언해주어야 하고 초기화를 시켜줘야한다. 또한 break; 를 작성해주어야한다. break를 쓰지 않게되면 default문 까지 모두 코드가 실행되니 조심해야한다. default문은 if문의 else와 마찬가지로 만약 month에 17이라는 숫자가 저장되어있으면  case문 조건에 존재하지 않으니 defalut문을 실행하게 된다. 이로써 결과를 살펴보면

결과1

위와 같이 결과물을 볼 수 있다. 

 

ps) switch문에서 안되는경우는 있을 수 있지만, if문에서 안되는 경우는 없습니다. 가장 중요한 문법이니 많은 연습이 필요할꺼 같습니다.