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 ]
자바 Dispatch란? ( static , dynamic , double Dispatch ) (0) | 2020.12.25 |
---|---|
자바 상속이란? (0) | 2020.12.25 |
[JAVA] 클래스란? (0) | 2020.12.16 |
JAVA] 자바 데이터 타입, 변수 그리고 배열 (0) | 2020.11.21 |
JAVA] Java code가 돌아가는 JVM 동작원리 (0) | 2020.11.14 |