본문 바로가기

Programming language/Java

[JAVA] switch문

switch문이란?

1. java의 조건문(if, switch) 중 하나이다.
2. 처리해야 하는 경우의 수가 많을 때 유용한 조건문이다.

(if-else if 문을 사용해도 상관없지만 경우의 수가 정말 많을 때는 switch문이 더 유리하다.)

 

switch문의 흐름
1. 조건식을 계산한다.
2. 조건식의 결과와 일치하는 case문으로 이동한다.
3. 이후의 문장들을 수행한다.
4. break문이나 switich문의 끝을 만나면 swith문 전체를 빠져나간다.

 

switch문의 특징
1. 조건식은 ture, fasle가 아니라 어떤 결괏값이고 결괏값으로는 정수나 문자열이 올 수 있다.
2. break를 만나지 않으면 다른 case문이 있어도 무시하고 끝까지 가서 실행하는 것을 주의하자. (break문 생략 가능)
3. default문은 조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들이다. (default문 생략 가능)
4. 보통 default문은 switch문의 마지막에 적기 때문에 굳이 brake문을 적지 않아도 된다.
5. if-else if문은 조건식이 여러 개이고 switch문은 조건이 한 개이므로 더 효율적이다.

switch문의 제약조건
1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수 상수(문자 포함), 문자열만 가능하며, 중복되지 않아야 한다. (상수이므로 변수가 올 수 없다.)

 

switch문의 제약조건을 지키지 않은 예제

int num, result;
final int ONE = 1;
//...
num = 1;
result = 49;
switch (result){
case '1':
case ONE:
// case num: // 컴파일 에러(변수)
// case 1.1: // 컴파일 에러(실수)
}


switch문을 이용하여 현재의 계절을 알려주는 예제

int month = 0;
System.out.print("현재 월을 입력하세요 : ");
Scanner scanner = new Scanner(System.in);
month = scanner.nextInt();

switch (month){
case 3: case 4: case 5:
System.out.println("현재의 계절은 봄입니다.");
break;
case 6: case 7: case 8:
System.out.println("현재의 계절은 여름입니다.");
break;
case 9: case 10: case 11:
System.out.println("현재의 계절은 가을입니다.");
break;
case 12: case 1: case 2:
System.out.println("현재의 계절은 겨울입니다.");
break;
default:
System.out.println("잘못된 입력입니다."); // 마지막 break 문은 생략함
}