※ 2021년 11월 23일에 작성된 글입니다.
🕹 Switch Expression
switch
를 명령문(statement) 뿐만 아니라 표현식(expression)으로도 사용할 수 있도록 확장
JDK 12, 13에서 preview, JDK 14에서 standard로 제공된다.
JEP 361 Switch Expressions
코드로 비교해보자
Before
switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
System.out.println(6);
break;
case TUESDAY:
System.out.println(7);
break;
case THURSDAY:
case SATURDAY:
System.out.println(8);
break;
case WEDNESDAY:
System.out.println(9);
break;
}
(MONDAY
, FRIDAY
, SUNDAY
)와 (THURSDAY
, SATURDAY
)는 동일한 처리를 하기 위해 연속적으로 위치하고 있다.
중복된 코드(case
, break
, System.out.println
)가 발생한다.
int numLetters;
switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
numLetters = 6;
break;
case TUESDAY:
numLetters = 7;
break;
case THURSDAY:
case SATURDAY:
numLetters = 8;
break;
case WEDNESDAY:
numLetters = 9;
break;
default:
throw new IllegalStateException("Wat: " + day);
}
numLetters
변수를 먼저 선언해놓고, switch
문에서 값을 할당하고 있다.
After
switch (day) {
case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case THURSDAY, SATURDAY -> System.out.println(8);
case WEDNESDAY -> System.out.println(9);
}
같은 처리를 하는 (MONDAY
, FRIDAY
, SUNDAY
)와 (THURSDAY
, SATURDAY
)를 하나로 묶었다.break
를 이용해 구분하지 않고, ->
를 이용해 각 조건에 해당하는 코드를 작성한다.
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
numLetters
변수를 선언하면서 switch
표현식을 이용해 초기화했다.
Final
System.out.println(
switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
}
);
System.out.println
메서드 내에서 switch
표현식을 사용했다.
'프로그래밍 > Java' 카테고리의 다른 글
[Java] JDK 버전별 차이점 정리 (1.5~17) (5) | 2024.09.04 |
---|---|
[Java] Pattern Matching for instanceof (0) | 2024.09.04 |
[Java] 레코드(Record) (0) | 2024.09.04 |