Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발자 도전기

[코딩공부] switch문, switch expression 본문

개발공부/JAVA

[코딩공부] switch문, switch expression

jnnjnn 2024. 2. 24. 00:43

 

switch문은 입력 변수값과 case 값이 일치할 때 실행되는 조건문이다. if문보다 사용범위는 제한적이지만 값에 따라 출력되는 내용이 다양할 때 사용하면 좋다.

 

switch문은 다음과 같이 사용할 수 있다.

 switch ("서울") { // 값이 "서울"
            case "서울":
                System.out.println("statement 2");
                break;

            // 값이 "제주"
            case "제주":
                System.out.println("statement 3");
                break;

            // 값이 "부산"
            case "부산":
                System.out.println("statement 4");
                break;
        }

 

변수에 맞는 case를 만나면 해당 코드를 실행하고 break를 통해 switch문을 빠져나간다.

 

만약 break를 사용하지 않는다면 그 다음의 case 문에 속한 문장들이 실행된다.

 

        // 결과 : statement 2
        //       statement 3
        //       statement 4
        
        switch ("서울") {
            case "서울":
                System.out.println("statement 2");
                
            case "제주":
                System.out.println("statement 3");
                
            case "부산":
                System.out.println("statement 4");
                
        }

 

이렇게 break를 사용하는 것이 불편하기 때문에 자바 12부터는 switch expression을 지원한다.

switch expression에서는 break를 생략할 수 있다.

 

// switch expression

int value = 1;

        switch (value) {
            case 1 -> System.out.println("statement 1");
            case 2 -> System.out.println("statement 2");
            case 3 -> {
                // 여러 명령문이 존재하면 {} 괄호 사용
                System.out.println("statement 3");
                System.out.println("statement 4");
            }
            case 5 -> System.out.println("statement 5");
        }

 

또, 자바 13부터는 yield의 사용이 추가되었다.

// yield

int length = 5;
        String shape = "원"; // 원, 정사각형

        double result = switch (shape) {
            case "원" -> {
                double calc = 3.14 * length * length;
                yield calc; // result에 calc 대입
            }
            case "정사각형" -> length * length;
            default -> 0.0;
        };