switch문
switch문
- 처리해야 하는 경우의 수가 많을 때 유용한 조건문 (조건문의 종류에는 if문과 switch문 두종류가 존재)
경우의 수가 많을 때는 switch를 쓴다. 앞서 공부했던 if-else if문을 사용해도 되지만,
경우의 수가 꽤 많으면 switch문이 유리하다.
switch문 안에는 case가 여러개 있다.
조건식을 계산해서 그 결과값과 case문장에 있는 값을 비교하여 일치하는 곳으로 이동한다.
위의 예제를 예로들면, 만약에 조건식에서 값이 값2가 나왔으면, case 값2로 이동한다.
그러면 그다음에 나오는 문장들을 쭉 실행하다가, break문을 만나면 switch문 전체를 빠져나간다.
다시한번 실행 과정을 정리해보면 아래와 같다.
한가지 더 설명할게 잇는데,
switch문의 마지막 끝쪽을 보면 default문이 있는데,
이 default문은 뭐냐면, 조건식 결과가 case의 값들 중 일치하는게 없을 때,
default로 이동해서 해당 블럭에 있는 문장들이 수행된다.
이 default문은 else문처럼 생략이 가능하다.
Switch문 과 if-else if문의 차이
if문의 조건식은 결과값이 true, false 이렇게 두가지만 가능하다.
switch문의 조건식 결과값은 정수, 문자열이 가능하다.
그리고, if-else if는 조건식이 여러개 사용된다.
switch문은 조건식을 1번만 계산하면 되기 때문에 좀더 효율적이다.
그리고, if-else if는 조건식때문에 블럭이 계속 들여쓰기 되기 때문에 괄호가 많아지고 복잡해진다.
switch문은 case문만 추가하면 되기 때문에 깔끔하다
대충 이러한 차이점이 있는데,
추가적으로 switch문은 제약조건이 존재한다.
그러니까, 제약조건 때문에 switch문을 쓰고싶어도 쓸 수 없는 경우가 있다.
그럴때는 어쩔 수 없이 if-else if문을 써야한다.
그치만 앞서 말햇듯 switch문이 깔끔하고 효율적이기 때문에,
경우의 수가 많은 경우, 가능하면 switch문을 사용 하는게 좋다.
기본적으로 if-else if문을 많이 사용하긴 하지만,
경우의수가 너무 많은 경우, switch문으로 바꿀 수 없는지 고민해 보아야 한다.
switch문은 항상 If문으로 바꿀 수 있는데,
if문은 switch문으로 바꿀 수 없는 경우가 많다.
switch문의 제약 조건
- switch문의 조건식 결과는 정수 또는 문자열이어야 한다.(문자열의 경우 jdk1.7이상)
- case문의 값은 정수 상수(문자 포함), 문자열만 가능하며, 중복되지 않아야 한다. (상수만 된다는 건 변수는 안된다는 뜻)
result값은 int타입이니까 정수일 것이다.
계산을 통해 switch문에 있는 result값이 들어가서
여러개의 case문 중에 하나로 이동 할 것이다.
첫번째 케이스 '1'은 문자 리터럴로 정수 49와 동일하다. OK
두번째 케이스는 ONE인데, 위에 final int ONE =1; 문장에 따라 ONE은 상수이므로 OK
세번째 케이스는 "YES"인데 JDK1.7부터 문자열도 허용되므로 OK
네번째 케이스는 num인데, num은 변수이므로 에러 발생.
다섯번쨰 케이스는 1.0 즉, 실수인데 실수도 불가능 하므로 에러 발생.
switch문에는 이러한 제약 조건이 있다는 것을 잘 알아두자.
'JAVA' 카테고리의 다른 글
for문 (0) | 2022.03.19 |
---|---|
임의의 정수 만들기 (0) | 2022.03.19 |
if-else문, 중첩 if문 (0) | 2022.03.18 |
조건문 if문과 if-else문 (0) | 2022.03.17 |
조건 연산자, 대입 연산자 (0) | 2022.03.17 |
댓글
이 글 공유하기
다른 글
-
for문
for문
2022.03.19 -
임의의 정수 만들기
임의의 정수 만들기
2022.03.19 -
if-else문, 중첩 if문
if-else문, 중첩 if문
2022.03.18 -
조건문 if문과 if-else문
조건문 if문과 if-else문
2022.03.17