Java 관련/Java

[Java] 제어문 - 조건문(switch 문)

씨네 2021. 10. 9. 09:13
728x90


switch 문

switch 문도 if 문처럼 조건을 보고 해당 조건이 참일 경우 명령을 수행하는 조건문인데요.

사용방법이 조금 달라요.

if 문은 조건이 참인지 아닌지 판별을 하고 명령을 수행했다면 switch 문은 조건에 맞는 위치로 바로 점프를 해서 맞는 명령만 수행을 합니다.

컴파일러가 최적화를 쉽게 할 수 있어서 속도가 빠른 편입니다.

하지만 조건식이 들어가는 게 아니라 조건 값이 들어갑니다.

switch (조건 값) { 
case 값1: 
	조건 값이 값1 일때 명령문; 
break; 
case 값2: 
	조건 값이 값2 일때 명령문; 
break; 
... 
default: 
	조건 값이 모든 case에 해당하지 않을 때 명령문; 
break; 
}

기본 형태는 다음과 같습니다.

case의 값이 조건 값에 맞는 값이라면 해당 명령을 수행합니다.

그리고 break; 명령이 빠져나올 수 있도록 도와줍니다.

break가 없다면 조건 값의 값이 값 2라면 값 1은 보지 않고 점프했지만 아래의 모든 명령을 수행하기 때문이죠. 또한 조건값이 맞는 case의 값이 없다면 default의 명령을 수행하게 됩니다.

switch (2) { 
case 1: 
	System.out.println("1입니다."); 
break; 
case 2: 
	System.out.println("2입니다."); 
break; 
case 3: 
	System.out.println("3입니다."); 
break; 
case 4: 
	System.out.println("4입니다."); 
break; 
case 5: 
	System.out.println("5입니다."); 
break; 
default: 
	System.out.println("1, 2, 3, 4, 5가 아닙니다."); 
break; 
}

위의 코드를 실행하면

2입니다.

라는 결과가 출력이 될 것입니다.

근데 만약 break가 없다면

2입니다.

3입니다.

4입니다.

5입니다.

1, 2, 3, 4, 5가 아닙니다.

가 출력이 될 것입니다.

이해되셨나요??

그리고 여러 개의 값이 한 가지 명령을 수행하도록 할 때는 조금 다른 형식으로도 쓸 수 있습니다.

switch (조건 값) { 
case 값1: case 값2: case 값3: case 값4: case 값5: 
	조건 값이 값1, 값2, 값3, 값4, 값5 일때 명령문; 
break; 
case 값6: case 값7: case 값8: case 값9: case 값10: 
	조건 값이 값6, 값7, 값8, 값9, 값10 일때 명령문; 
break; 
	... 
default: 
	조건 값이 모든 case에 해당하지 않을 때 명령문; 
break; 
}

코드로 예시를 보면 바로 이해가 되실 겁니다.

코드를 보시니까 무슨 말인지 아시겠지요?

728x90