[Java의 정석]Chapter4.조건문과 반복문(09~11)

Chapter 4. 조건문과 반복문

09. switch문

  • if문은 조건식의 결과가 참 거짓, 두 가지 밖에 없기 때문에 경우의 수가 많아질수록 else-if를 추가 해야 하므로 복잡해짐
  • Switch문은 단 하나의 조건식으로 많은 경우의 수를 처리

🍟 switch문의 수행 과정

① 조건식을 계산
② 조건식의 결과와 일치하는 case문으로 이동
③ 이후의 문장들을 수행
④ break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나감

switch(①조건식) {
	case 값1 : 	
    	//조건식의 결과가 값1과 같은 경우 수행될 문장들
        //...
        break;
   ②case 값2 : 
   		//③조건식의 결과가 값2와 같을 경우 수행될 문장들
        //...
       ④break; //switch문을 벗어남
   //...
   default :
   		//조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들
        //...
} 
  • 만일 조건식의 결과와 일치하는 case문이 없는 경우 default문으로 이동
  • default문의 위치는 어디라도 상관없으나 보통 마지막에 놓기 때문에 break문을 쓰지 않아도 됨
  • switch문에서 break문은 각 case문의 영역을 구분하는 역할
  • 만일 break문을 생략하면 case문 사이의 구분이 없어지므로 다른 break문을 만나거나 switch문 블럭{}을 만날 때 까지 모든 문장을 수행(그러니 생략에 주의)

10. switch문의 제약조건

🚩 switch문의 제약조건
①switch문조건식의 결과값정수 또는 문자열이어야 함
case문의 값정수 상수(문자포함). 문자열만 가능. 중복되지 않아야 함(결과값과 일치하는 case문으로 이동하기 때문)

🍕 case문의 몇가지 예

public static void main(String[] args) {
	int num, result;
    final int ONE = 1;
    ...
    switch(result) {
    	case '1':		//OK. 문자 리터럴(정수 49와 동일)
        case ONE:		//OK. 정수 상수('final'붙은 정수 상수)
        case "YES":		//OK. 문자열 리터럴.JDK 1.7부터 허용
        case num:		//에러. 변수 불가
        case 1.0:		//에러. 실수 불가
        ...
  }

11. switch문의 제약조건 예제

🍕 예제의 switch문을 if문으로 변경

if(month==3 || month==4 || month ==5) {
	System.out.println("현재의 계절은 봄입니다."); 
} else if(month==6 || month==7 || month==8) {
	System.out.println("현재의 계절은 여름입니다.");
} else if(month==9 || month==10 || month==11) {
	System.out.println("현재의 계절은 가을입니다.");
} else (//if(month==12 || month==1 || month==2)    
	System.out.println("현재의 계절은 겨울입니다.");
}

좋은 웹페이지 즐겨찾기