DevCastleOne

Java13 switch 연산자

2020. 11. 28. 00:18

Java12부터 switch 연산자가 추가 되었다.

기존에 switch문이 변경된것이 아니라 switch 연산자가 추가 된것이다.

 

[switch statement]

다수의 case,break가 존재하게 된다.

break; 를 빼먹을 경우 다음 분기로 넘어가게 됨.

return값이 존재할수없다.

 

[switch operator]

break를 사용하지 않아도 된다.

yield 존재함

return값 존재해도됨

case -> A 같은 형식으로 표현가능

switch의 반환값이 따로 필요하지 않거나 case가 switch 들어오는 모든 인자를 커버하는 경우

default 항목을 넣어주지 않아도 되나 그렇지 않은 경우는 default -> code를 작성해야 한다.

 

[Java12]

1. ->(화살표) 표현이 가능하고 data만 존재할 경우 return이 가능하다.

2. -> 구문을 사용할 경우 break;를 적지 않아도 다음 case 구문으로 넘어가지 않는다.

3. -> 표현 오른쪽은 꼭 단일 수행일 필요는 없다. 블록 {} 안에서의 작업도 가능하다.

 

[Java13]

1. yield 예약어가 추가됨. yield x 하게 되면 x가 리턴됨.

2. yield는 예약어이지만 변수명으로 사용가능하다. int yield = 3; 

 

public class Main {
    public static void main(String[] args) {

        //Java 12 이전
        int num = 1;
        int returnNum = 0;
        switch(num){
            case 1:
                returnNum = 1;
                System.out.println("1들어옴");
                break;
            case 2:
                returnNum = 2;
                System.out.println("2들어옴");
                break;
            case 3:
                returnNum = 3;
                System.out.println("3들어옴");
                break;
        }
        System.out.println("returnNum : [ " + returnNum + " ]");

        //Java 12
        returnNum = switch(num){
            case 1 -> 1;
            case 2 -> 2;
            default -> throw new IllegalStateException("Unexpected value: " + num);
        };
        System.out.println("returnNum : [ " + returnNum + " ]");


        //Java13
        returnNum = switch(num){
            case 1 : yield 3;
            default : throw new IllegalStateException("unexpected value : " + num);
        };

        System.out.println("returnNum : [ " + returnNum + " ]");

    }
}


1들어옴
returnNum : [ 1 ]
returnNum : [ 1 ]
returnNum : [ 3 ]

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band