if ~ else 문은 여러 개의 조건을 지정하려면 else if 문을 계속 생성하며 코드가 길어지는 반면,
switch~case 문은 비교적 코드가 쉽고 간단한게 장점이다.
if 문을 switch 문으로 변환할 수 있고, switch 문을 if 문으로 변환할 수 있지만
'모든' if 의 문장을 switch 로 바꿀 수는 없다.
if 는 비교연산자를 통해 범위를 지정하는 조건식을 작성 가능하지만
switch 문은 변수의 값 어떤 수치나 문자로 명시되는 경우로 분류되어 상대적 제약이 있기 때문이다.
switch (변수) {
case 값1 : 실행문 1;
case 값2 : 실행문 2;
case 값3 : 실행문 3;
default : 실행문 4;
}
- switch문에 break; 가 없는 경우
switch 의 () 안에 변수를 지정한 후 변수가 값1 일 때 실행문1, 실행문2, 실행문3, default 를수행하고
값2 일 때 실행문2, 실행문3, default 를 수행하고 값3 일 때 실행문3, default 을 수행하고
값1, 값2, 값3 이 전부 아닐 때 default 의 실행문4 를 수행한다.
break; 가 없기 때문에 끊어서 수행이 되지 않고 case문이 전부 수행이 된다.
//등급에 따른 가격 책정의 경우(1등급~3등급)
int grade = 2;
int price = 7000; //기본 가격
switch (grade){
case 1:
price+= 1000;
case 2:
price+= 1000;
case 3:
price+= 1000;
break;
}
System.out.println(grade + "등급 제품의 가격은 " + price + "원 입니다.");
// break를 마지막에 달았기 때문에 밑으로 합산되면서 내려옴
//= 1등급:10000원, 2등급:9000원, 3등급:8000원
break 문 : 실행을 멈추고 블록 빠져나오기
switch문은 해당 조건에 맞는 case를 찾으면 실행문을 수행 후, 그 밑의 나머지 case들도 조건에 상관없이 실행한다.
switch문의 이런 흐름을 이용한 프로그래밍에는 물론 유용하겠지만, 때에따라 멈추고 싶을 때도 있을 것이다.
그럴 때 break문 을 사용한다.
break문은 조건 충족을 하는 코드를 실행한 후 조건문을 빠져나오는 역할을 한다.
//1등 : 전액 장학금, 2등 : 반액 장학금, 3등 : 반액 장학금, 그 외 : 대상 아님.
int ranking = 1; // 1등 (등수는 정수이기에 int)
if (ranking == 1){
System.out.println("전액 장학금 당첨");
} else if (ranking ==2) {
System.out.println("반액 장학금 당첨");
} else if (ranking == 3) {
System.out.println("반액 장학금 당첨");
} else {
System.out.println("장학금대상 아님");
}
System.out.println("조회 완료 #1");
//Switch Case 문을 이용하면?
ranking = 4;
switch (ranking){
case 1:
System.out.println("전액 장학금");
break;
case 2:
System.out.println("반액 장학금");
break;
case 3:
System.out.println("반액 장학금");
break;
default:
System.out.println("대상 아님");
}
System.out.println("조회 완료 되었습니다.");
'IT Programming > Java' 카테고리의 다른 글
[JAVA] 10. int 와 Integer ? / 그리고 WrapperClass (0) | 2023.04.12 |
---|---|
[Java] 09. 배열 기초 1강/ 배열선언부터 초기화까지 (0) | 2023.03.27 |
[Java] 07. 자바 String / new String ? (0) | 2023.03.14 |
[Java] 06. 반복문 for / while (0) | 2023.03.13 |
[Java] 05. 조건문 if / if ~ else / else if (0) | 2023.03.13 |
댓글