AiPE

Switch-case 문에서 break;가 필요한 이유는? 본문

[XiBBaL] Study/Java

Switch-case 문에서 break;가 필요한 이유는?

Oshimaker XiBBaL 2024. 3. 25. 21:28
반응형

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를 실행하도록 의도하여 구현할 수도 있다.

 

반응형