Java

[Java14] 새로운 Switch문

oneH 2024. 9. 13. 20:52

 

 

  Java에서 switch문은 if문과 달리 특정 값일 때 동작하는 문법이다. 

  

 

 


 

 

기존 switch문을 자세히 보자.

public class OldSwitch {
    public static void main(String[] args) {
        String phoneName = "Apple";
        switch (phoneName) {
            case "Apple":
                System.out.println("애플쓰군요!");
                break;
            case "SamSung":
                System.out.println("SAMSUNG쓰군요!");
                break;
            case "LG":
                System.out.println("LG쓰군요!");
                break;
            default:
                System.out.println("어떤 폰 쓰시나요?>");
                break;
        }
    }
}

 

  해당 코드는 if문으로만 작성할 수 있는 코드이다. switch문은 특정 값일 때, 특정 코드가 동작하기 위해 고안된 코드인데. if문으로 작성한 코드랑 가독성이 비슷해 보인다.

 

 

public class OldSwitch {
    public static void main(String[] args) {
        String phoneName = "PIXEL";
        if (phoneName == "Apple") {
            System.out.println("애플쓰시네요?");
        } else if (phoneName == "SamSung") {
            System.out.println("SAMSUNG쓰시네여?");
        } else if (phoneName == "LG") {
            System.out.println("LG쓰시네요?");
        } else {
            System.out.println("어떤 폰 쓰시나요?>");
        }
    }
}

 

  물론 if문 보다 위에 있는 switch문이 더 직관적이고 보기 쉬울 수도 있다, 하지만 많은 프로그래머들은 java의 switch문의 장점이 적다 생각해 JAVA14에서는 더 강력한 switch문이 탄생했다.

 

 

  새로운 switch

 

        String phoneName = "SAMSUNG";
        switch (phoneName){
            case "APPLE" -> System.out.println("애플쓰시네요?");
            case "SAMSUNG" -> System.out.println("삼성쓰시네요?");
            case "LG" -> System.out.println("엘지쓰시네요?");
            default -> System.out.println("어떤거쓰세요?>");
        };

 

  새로운 switch문은 화살표가 첨가되었다. ":" 아닌 ->화살표로 조건에 해당되는 코드를 실행시킨다. 

 

  새로운 switch문은 하나의 case에 값도 여러 개 넣을 수 있다.  

case "PIXEL","XIAOMI" -> System.out.println("??");

  옛날 switch문이었으면, case를 두 개 사용해야 하는 코드이다.

 

 

  무엇보다 break문이 사라져 코드의 길이가 줄어들었다.

 

 


 

 

 새로운 switch문은 다양한 기능이 첨가되었다. 

 

 대표적으로 값을 바로 리턴하여 변수 같은 곳에 대입할 수 있다.

 

        int grade = 2;

        int coupon = switch (grade) {
            case 1 -> 1000;
            case 2 -> 2000;
            case 3 -> 3000;
            default -> 0;
        };
        System.out.println(coupon);

 

  이처럼 coupon 변수를 선언과 동시에 switch문으로 해당 조건에 맞는 값을 변수에 대입할 수 있다.

  여기서 coupon변수는 2000으로 값이 부여되었다.

 

        String userName = "홍길동";
        System.out.println(
                switch (userName) {
                    case "홍길동" -> "Hello my friend";
                    default -> "How are you???";
                }
        );

 

  이런 식으로 메서드에 인자값을 switch문을 통해 특정 조건일 때 특정 인자를 리턴할 수 있다.

 

  하지만 이처럼 값을 리턴할 경우 반드시 default가 있어야 한다.

 


 

 

  yield 키워드

 

  case에 여러 개의 문장을 동작시켜야 하는 경우도 있다. 이럴 땐 새로운 switch문에서 {} 중괄호 안에 여러 문장을 넣는다.

 

 

        String item= "";

        int price = switch (item){
            case "TV"-> 500_000;
            case "air fryer" -> 80_000;
            default -> {
                int emptyCheck = item.length();
                checkedEmpty(emptyCheck);
                yield emptyCheck;
            }
        };
        System.out.println(price);
        
    static void checkedEmpty(int emptyCheck){
        if(emptyCheck==0){
            System.out.println("담은 물건이 없습니다.");
        }
    }

 

 

 

 

대표사진 출처

https://www.flaticon.com/kr/free-icon/java_226777