Java switch 문

문제와 함께 switch문을 배워보도록 하자.

프로그램은 사용자 등급에 따라 상시 할인액을 적용하는 프로그램을 작성한다.

  • Gold: 10%
  • Silver: 5%
  • Bronze: 3%
  • None: 1%

할인 적용 후 메시지는 "할인 적용 금액: " + "할인 퍼센트" 이다.
아래 예시와 같이 출력한다.

  • Silver 사용자: "할인 적용 금액 5%"

switch 문 코드 구현

public class Switch {
    public static void main(String[] args) {
        String grade = "Silver";
        String discount = "";

        switch (grade) {
            case "Bronze":
                discount = "3%";
                break;
            case "Silver":
                discount = "5%";
                break;
            case "Gold":
                discount = "10%";
                break;
            default:
                discount = "1%";
        }
        System.out.println("할인 적용 금액: " + discount);
    }
}

Code Output:
할인 적용 금액: 5%

switch 문은 case에서 값이 같은지 확인한다.

  • switch(grade) 결과 값이 case 의 값과 일치하면 해당 case 코드를 실행함
  • break 문으로 switch 문 종료함. 그렇지 않으면 아래 case까지 수행한다.
  • default 는 모든 case의 일치하는 값이 없는 경우 실행함.
💡
Java 1.7 버전부터 Switch 문을 String 타입 변수로 할당한 경우,
case 문자열을 알아서 비교해준다.

자세한 사항은 JLS를 살펴보도록 한다.

Chapter 14. Blocks and Statements

개선된 switch 문

자바 14부터 새로운 switch 문이 개선되었다.
새로운 switch 문의 큰 특징은 다음과 같다.

  • 화살표 (->) 를 사용한다.
  • 선택한 데이터를 반환
public class SwitchEffect {
    public static void main(String[] args) {
        String grade = "Silver";
        String discount = switch (grade) {
            case "Bronze" -> discount = "3%";
            case "Silver" -> discount = "5%";
            case "Gold" -> discount = "10%";
            default -> discount = "1%";
        };

        System.out.println("적용 된 할인 금액: " + discount);
    }
}

switch 문이 훨씬 간결해졌다.