Java

[Java]제어문(Control Statement) - switch문

MoZZANG 2022. 2. 25. 21:29

switch문은 if문과 같이 조건문중 하나이다.

 

switch문의 구조는 다음과 같다.

▲ 빨간줄은 무시하고 구조를 보자. switch의 조건식은 무조건 산술식이 들어가서 어떠한 숫자값이 나오거나나 char, String타입의 값이 나와야 한다

그 산술식의 값이 case의 값들(값1, 값2, 값n...)과 비교해서 동일한 값이 있다면 그 case로 바로가서 그 case에 해당하는 명령문을 실행시키고, break를 통해서 switch문이 종료된다. 여기서 종료된다는 것은 나머지 case들을 다 무시하고 해당 switch문을 빠져나온다는 것이다.

 

 

여기서 조심!!

switch의 조건에 들어가는 '산술식'에는 연산의 결과값이 연산의 결과값 byte/short/char/int/String/Enum타입으로 나오는 식만 가능하다.(long형은 안된다!).

 

▲ 산술식말고 변수가 올 수도 있으니 타입은 역시나 동일하다.

 

 

즉, 아래와 같은 경우는 불가능 하다는 것이다

 

 

 

 

 

우리가 바로 위에서 살펴본 else~if문으로 작성한 코드를 switch문으로 바꿔볼 수도 있을 것이다.

결과값은 나머지 1이다.

▲ else~if문으로 나머지값을 판단하는 코드

 

 

 

 

▲ 동일한 내용을 swith문으로 위와 같이 작성할 수 있다.

 

 

 

 

이번에는 switch문에서 찐빵의 앙꼬같은 존재인 break의 중요성에 대해서 알아보자

만약 break가 없다면 어떻게 될까?

 

▲ case에 break를 넣지 않았다. 결과값은 아래와 같다.

 

▲ 분명 b의 값은 5이기 때문에 case 5에 해당하는 코드만이 실행되어야 하는데 case10의 코드도 실행된 것을 볼 수 있다. 바로 break가 없었기 때문이다. b가 5이므로 switch문은 값이 5인 case를 찾았고 그 코드를 실행하고나서 break가 없다보니 그냥 그 다음 case에 해당하는 코드들을 실행해버린 것이다. 

 

이처럼 switch문에서 break의 유무는 원치않는 결과를 가져올 수 있으므로 반.드.시. 사용하도록 하자!!

 

 

if문과 switch문 모두 조건문(분기문)의 기능을 하지만 연속적인 범위를 가지는 조건을 쓸 때는 주로 if문을 사용하고,
수식의 결과값이 이산적일때(연속적이지 않을때) switch문 사용한다.

 

 

--default

마지막으로 default의 사용법을 간단한 예제와 같이 알아보자.

 

▲ default는 else와 같은 역할을 하는 기능으로써 '나머지는~' 또는 '그 외에는~'과 같은 역할을 수행한다.

'Java' 카테고리의 다른 글

[Java]반복문(part.1 - for문)  (0) 2022.02.28
[Java]변수의 자료형 (part.3 char형과 boolean)  (0) 2022.02.26
[Java]제어문(Control Statement) - if문  (0) 2022.02.25
[Java]연산자들  (0) 2022.02.24
[Java]Format String  (0) 2022.02.24