AiPE
Switch-case 문에서 break;가 필요한 이유는? 본문
반응형
switch-case문이 무엇인지에 대해 먼저 알아보자.
switch-case문은 조건에 따라 행동이 달라지는, 조건 분기를 처리할 때 사용한다.
즉,
" 특정 조건을 만족할 때는 A를 하고, 다른 조건을 만족할 때는 B를, 내가 기술한 조건 중 해당하는 것이 없으면 default를 실행해라 " |
라고 명령하는 것과 같다.
이를 코드로 구현하면 다음과 같다.
switch (something) {
case value1:
// 코드 작성
break;
case value2:
// 코드 작성
break;
default:
//코드 작성
break;
}
위 코드는 switch-case문의 가장 기본적인 구조이다.
switch 뒤의 괄호에 있는 something이 각 case 옆의 value와 일치하면 해당 case가 실행된다.
일치하는 case가 없으면 default이 실행된다.
(defalut의 경우 원하는 대로 쓸 수도 있고 없앨 수도 있다.)
여기서 매 case의 마지막을 break;로 종료하는 것을 볼 수 있다.
만약 break문이 없다면 switch밖으로 빠져나가지 못하고 해당 지점 아래의 case들이 순차적으로 실행된다.
int day = 3;
switch (day) {
case 1:
System.out.println("월요일");
case 2:
System.out.println("화요일");
case 3:
System.out.println("수요일");
case 4:
System.out.println("목요일");
case 5:
System.out.println("금요일");
case 6:
System.out.println("토요일");
case 7:
System.out.println("일요일");
}
예를 들어, 위와 같은 코드에서 case 3 뒤에 break;이 있었다면 "수요일"만이 출력되고 실행이 종료되었겠지만,
break;가 없는 관계로 case 3, 4, 5, 6, 7이 모두 실행된다.
break문이 없어서 발생하는 이러한 현상을 "fall-through"라고 부른다.
만약 프로그래머가 의도한 것이 특정 case 하나만 실행되는 것이었다면, break;를 반드시 case 마지막에 붙여주어야 한다.
반대로, fall-through를 이용하여 특정 case부터 시작하여 이어지는 모든 case를 실행하도록 의도하여 구현할 수도 있다.
반응형
'[XiBBaL] Study > Java' 카테고리의 다른 글
클래스(Class) vs 객체(Object) vs 인스턴스(Instance) vs 메서드(Method) (1) | 2024.04.03 |
---|---|
break문과 continue문의 용도 비교 (0) | 2024.03.25 |
명시적 형 변환과 묵시적 형 변환 (0) | 2024.03.25 |
상수(Constant)와 리터럴(Literal)의 정의와 관계 (cf. 프로그래밍에서의 상수와 수학에서의 상수) (0) | 2024.03.25 |
컴파일러(Compiler)와 인터프리터(Interpreter)의 정의와 장단점 및 특징 (0) | 2024.03.25 |