반응형
Java 14 Switch Expressions
기존 C 나 Java 에서 사용하던 Switch 문은 if-else 문을 놔두고 굳이 쓸만한 이유를 딱히 찾지 못했기 때문에 거의 사용하지 않던 문법이다.
하지만 Java 14 이후로 개선된 Switch 문이 도입되었고 아래와 같은 feature 들이 추가되었다.
- Arrow Labels
- Switch expressions
- Yielding a value
Arrow Labels
- 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;
}
- 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);
}
-> 로 매우 간편하게 표현이 가능하다.
Switch Expressions
- before
import static java.util.Calendar.*;
public class Switch2 {
public static void main(String[] args) {
int day = 1;
int numCnt;
switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
numCnt = 6;
break;
case TUESDAY:
numCnt = 7;
break;
case THURSDAY:
case SATURDAY:
numCnt = 8;
break;
case WEDNESDAY:
numCnt = 9;
break;
default:
numCnt = -1;
}
System.out.println(numCnt);
}
}
- after
import static java.util.Calendar.*;
public class Switch2 {
public static void main(String[] args) {
int day = 1;
int numCnt = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
default -> -1;
};
System.out.println(numCnt);
}
}
기존에는 변수 = ? 의 식이 계속 중복되어 사용되었는데
변수를 선언하고 switch 문의 값을 바로 변수에 대입을 할 수 있게 개선되어 불필요한 중복문을 없앨 수 있다.
Yielding a value
- before
int result = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
default -> throw new IllegalStateException("Invalid day: " + day);
};
- after
import static java.util.Calendar.*;
public class Switch3 {
public static void main(String[] args) {
Integer day = 1000;
int numCnt = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
default -> {
int result = day.toString().length();
yield result;
}
};
System.out.println(numCnt);
}
}
yield 키워드를 사용하여 switch 문 안에서 선언된 또 다른 변수 (result) 를 numCnt 에 대입시키는 기능을 한다.
기존 switch 문에 비해 여러 요소들이 추가되어 코드의 가독성을 높이고 복잡한 조건문을 보다 명확하게 작성할 수 있게 된 것 같다.
참고
반응형
'개발 ━━━━━ > Java' 카테고리의 다른 글
[Java] Input 값 입력 받는 방법 ② - BufferedReader 클래스 (0) | 2024.03.05 |
---|---|
[Java] 배열 값 출력하기 (0) | 2023.08.27 |
[Java] 문자열 배열에 String 집어 넣기 (0) | 2023.08.25 |
[Java] String <-> Int 형변환 (0) | 2023.08.25 |
[Java/Algorithm] List 오름차순 (0) | 2023.08.24 |