처리해야 하는 경우의 수가 많을 때 유용하다.
대신 조건이 많은건 불가능...
switch (조건식) {
case 값1 :
//조건식의 결과가 값1과 같다면 case 값1 프린트
break;
case 값2 :
//조건식의 결과가 값2와 같다면 case 값2 프린트
break;
defalut :
// case 값1, case 값2에 없다면 쓰임 ->
반드시 써야 하는 건 아님
}
- 조건식을 계산한다.
- 조건식의 결과와 일치하는 case 문으로 이동한다.
- 이후의 문장들을 수행한다.
- break 문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.
- 근데 없다면 default로 넣을 수 있는데
반드시 쓸 필요는 없다.
각 case엔 break를 걸어주어야 하며
안걸면 case 1,2,3,4 다 나올 수 있다는 점!
if(조건식1){
//조건식 1의 연산결과가 참일 때 수행
}else if(조건식2){
//조건식 2의 연산결과가 참일 때 수행
}else if(조건식3){
//조건식 3의 연산결과가 참일 때 수행
}else{
// 조건식이 참인게 없다면 else
}
둘 다 조건문이라는 점에선 공통점을 가지지만
Switch문은 조건문에 해당하는 case를 가져가고
If 문은 else if문인 경우엔 조건문이 여러개 생길 수 있다.
즉 Switch문은 연산이 줄어서 간단하다.
- switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
- case문의 값은 정수, 상수(문자 포함), 문자열 가능, 중복되면 안되고, 변수는 X
int num, result;
final int ONE = 1;
switch(result) {
case '1': 문자 리터럴 가능
case ONE : 정수, 상수 가능
case "YES": 문자열 리터럴 가능
case num: 변수는 불가
case 1.0: 실수도 불가
// case에 숫자가 들어가는 예시입니다.
package Java_if;
import java.util.Scanner;
public class Swith_num {
public static void main(String[] args) {
System.out.println("현재는 몇월인가요?");
Scanner scanner = new Scanner(System.in);
int month = scanner.nextInt();
switch(month){
case 3: case 4: case 5:
System.out.println("현재 계절은 봄입니다.");
break;
case 6: case 7: case 8:
System.out.println("현재 계절은 여름입니다.");
break;
case 9: case 10: case 11:
System.out.println("현재 계절은 가을입니다.");
break;
default:
System.out.println("현재 계절은 겨울입니다.");
}
}
}
//case에 열거형(enum)상수가 들어간 예시
package Java_if;
public class Switch_day {
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public static void main(String[] args) {
Day today = Day.WEDNESDAY;
switch (today) {
case MONDAY:
System.out.println("Today is Monday");
break;
case TUESDAY:
System.out.println("Today is Tuesday");
break;
case WEDNESDAY:
System.out.println("Today is Wednesday");
break;
case THURSDAY:
System.out.println("Today is Thursday");
break;
case FRIDAY:
System.out.println("Today is Friday");
break;
case SATURDAY:
System.out.println("Today is Saturday");
break;
case SUNDAY:
System.out.println("Today is Sunday");
break;
}
}
}