Java 14, Java 17에서 적용된 switch문의 새로운 문법들
실행문을 화살표로 (->)
case -> A와 같이 표현할 수 있습니다.
일반 case(:)와 다르세 실행문이 여러줄이라면 반드시 중괄호{}를 사용해야 합니다.
static void test(Day day){
switch (day) {
case MONDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case WEDNESDAY -> System.out.println(8);
case THURSDAY -> System.out.println(9);
}
}
여러개의 case 값 (,)
여러개의 case값에 같은 실행문을 동작시킵니다.
static void test(Day day){
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 연산식
switch문이 반환값을 가집니다.
public void test(Day day) {
int cnt = switch(day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
}
메소드의 인자로 switch문을 넣을 수 있습니다.
public void test(Day day) {
System.out.println(
switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
});
}
yield 예약어
해당 switch 블록에서 switch 결과 값을 반환합니다.
public void test(Day day) {
int cnt = switch (day) {
case MONDAY -> 0;
case TUESDAY -> 1;
case WEDNESDAY -> {
int k = day.toString().length();
int result = k+5;
yield result;
//break result; <----- java 12 Switch Expression
}
default -> 0;
};
}
사용할 수 있는 데이터 타입
byte, short, int, char, Enum, String
패턴 매칭
switch문의 표현식의 타입을 case의 값으로 사용합니다.
String formatted = switch (obj) {
case Integer i -> String.format("int %d", i);
case Byte b -> String.format("byte %d", b);
case Long l -> String.format("long %d", l);
case Double d -> String.format("double %f", d);
case String s -> String.format("String %s", s);
default -> String.format("Object %s", obj);
};
더보기
📌 참고한 사이트