Skip to main content

[Java] Switch-case 내부 return


Switch-case 구문에서 분기점에서 바로 return 할 때 break; 추가 여부(부)

자바 switch-case 문에서는 각 case 끝에 break;를 꼭 넣어야 한다. 그래야 해당 case 실행 후 switch 문을 빠져나온다. break;가 없으면 다음 case들도 연속해서 실행되는 fall-through 현상이 발생해서 원하지 않는 동작이 생길 수 있다.

그러나

  • return이나 throw가 있으면 break 없어도 괜찮다.
  • 그 외에는 반드시 break 넣어줘야 한다.

break가 필요없는 예

switch (op) {
    case '+':
        return num1 + num2;  // return이라 break 없어도 되지만,
                            // 만약 return 없으면 break 꼭 필요
    case '-':
        return num1 - num2;
    case '*':
        return num1 * num2;
    default:
        throw new IllegalArgumentException("지원하지 않는 연산자입니다: " + op);
}

위처럼 return이 있으면 자동으로 switch 종료돼서 break가 없어도 돼.
하지만 return이 없고 case 내에서 작업만 한다면 반드시 break;를 써줘야 해.


break가 필요한 예

switch (op) {
    case '+':
        result = num1 + num2;
        break;
    case '-':
        result = num1 - num2;
        break;
    case '*':
        result = num1 * num2;
        break;
    default:
        throw new IllegalArgumentException("지원하지 않는 연산자입니다: " + op);
}

이렇게 break;를 넣어야 case마다 독립적으로 실행된다.


출처: chatGPT