기존 switch문

switch (operator) {
    case ADD:
        return num1 + num2;
    case SUBTRACT:
        return num1 - num2;
    case MULTIPLY:
        return num1 * num2;
    case DIVIDE:
        return num1 / num2;
    default:
        throw new IllegalArgumentException("잘못된 연산자입니다.");
}

 

 

개선된 switch문

return switch (operator) {
    case ADD -> num1 + num2;
    case SUBTRACT -> num1 - num2;
    case MULTIPLY -> num1 * num2;
    case DIVIDE -> num1 / num2;
    default -> throw new IllegalArgumentException("잘못된 연산자입니다.");
};

// 블록 사용하는 경우
return switch (operator) {
    case ADD -> {
        System.out.println("덧셈 연산 수행!");
        yield num1 + num2;  // ✅ `yield`를 사용해서 값을 반환해야 함!
    }
};

 

Java 12부터 사용 가능

 

  • -> 다음에 바로 반환값을 적을 수 있음 
  • break 필요 없음 
  • 간결하고 가독성 높음
  • 여러 줄을 작성해야 한다면 {} 사용
    • 블록 사용 시, 리턴할 때 yield 키워드 필요

 

 

변수에 값을 저장하는 switch문 예시

 

기존 switch문

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:
        numLetters = -1;
}

 

 

개선된 switch문

int numLetters = switch (day) {
    case MONDAY, FRIDAY, SUNDAY	-> 6;
    case TUESDAY				-> 7;
    case THURSDAY, SATURDAY		-> 8;
    case WEDNESDAY				-> 9;
};

 

 


 

예제 코드 출처 https://openjdk.org/jeps/361

'언어, 프레임워크 > Java' 카테고리의 다른 글

Assert 알아보기  (0) 2025.03.08
Collectors 클래스  (0) 2025.03.07
enum 이해하기  (0) 2025.03.06
contains() / equalsIgnoreCase() / Number 클래스  (1) 2025.03.05
제네릭 알아보기  (0) 2025.03.05