자바 switch 문
IT 위키
- Java switch statement
- 하나의 값을 여러 경우와 견주어 해당하는 곳으로 분기하는 제어문
switch (식) {
case 값1:
...
break;
case 값2:
...
break;
default:
...
}
case 는 진입 지점일 뿐이고 종료 지점이 아니다. 일치하는 case 로 들어간 뒤에는 break 나 switch 문의 끝을 만날 때까지 뒤따르는 case 의 문장을 모두 실행한다. 이것을 폴스루(fall-through)라고 한다.
아래 코드에서 i 가 3 이므로 case 3 으로 들어가고, break 가 없어 case 4·case 5·default 까지 차례로 실행된다.
int i = 3, k = 1;
switch (i) {
case 1: k += 1;
case 2: k++;
case 3: k = 0;
case 4: k += 3;
case 5: k -= 10;
default: k--;
}
// k = 0 → 3 → -7 → -8
의도한 폴스루라면 주석을 남기거나, 여러 case 를 붙여 쓰는 형태로 분명히 한다.
case 1: case 2: case 3:
...
break;
- byte, short, char, int 와 그 래퍼 클래스
- enum (자바 5부터)
- String (자바 7부터)
- long, float, double, boolean 은 쓸 수 없다
- case 의 값은 컴파일 시점에 정해지는 상수여야 한다. 변수는 쓸 수 없다.
- case 값이 중복되면 컴파일 오류다.
- default 는 없어도 되고 위치는 어디든 상관없지만 관례상 맨 아래에 둔다.
- 자바 14부터는 폴스루가 없고 값을 돌려주는 switch 식(`->`)을 쓸 수 있다.
