[CS] Switch에서 long, float, double을 입력변수로 사용하지 못하는 이유

김상현·2024년 1월 10일
1

CS

목록 보기
8/10
post-thumbnail

Switch란?

switch 문은 if 문과 비슷하지만 좀 더 일정한 형식이 있는 조건 판단문이다.

switch(입력변수) {
    case 입력값1: ...
         break;
    case 입력값2: ...
         break;
    default: ...
         break;
}

의문점?

switch 문에서 사용할 수 있는 입력변수는 char, byte, short, int, Character, Byte, Short, Integer, String, enum 값으로 제한되어 있다. 숫자 값을 가지는 대부분의 자료타입을 입력변수로 사용할 수 있는데 long, float, double은 사용할 수 없는 특별한 이유가 있는지 의문이 생겼다.

입력변수의 제한

📒 [Stack Overflow] Why can't your switch statement data type be long, Java?

Stack Overflow에서 가장 많은 추천을 받은 Answer의 내용을 정리하면 다음과 같다.

switch 문이 long 값에 대한 처리를 지원하지 않는 것은 실제로 필요한 경우가 드물어서
정수에 대한 처리에 중점을 두고 설계되었을 가능성이 있다.
따라서 long 값에 대한 switch 문이 필요한 경우에는 다른 방식으로 해결하거나 코드를 재작성해야 할 필요가 있다

즉, long, float, double과 같은 range가 넓은 자료타입을 switch 문의 입력변수로 사용하는 것보다 if 문을 사용하는 것이 더 효율적인 코드이기 때문에 switch 문의 입력변수로 range가 넓은 자료 타입을 사용하는 것을 제한하는 것 같다.

profile
목적 있는 글쓰기

0개의 댓글