본문 바로가기

자바의 정석 정리

자바의 정석 - 4.2 조건문 switch

4.2.1 switch

  • 하나의 조건식으로 많은 경우의수 처리 가능
  • 제약조건이 많다.
  • if와 달리 초기 참(true)인 조건을 만족해도 switch내부의 나머지 코드전체 실행
switch(조건식){
    case 값1:
        //조건식 결과가 값1일 경우 수행
    case 값2:
        //조건식 결과가 값2일 경우 수행
    default:
        //기본 실행
}

4.2.2 switch문의 실행 순서

  1. 조건식 계산
  2. 조건식 결과와 일치하는 case문으로 이동
  3. 이후 문장 수행
  4. break이나 switch전체가 끝나면 수행 종료

4.2.3 switch 제약조건

  1. switch의 조건식 결과는 정수 또는 문자열
  2. case의 값은 정수 상수만 가능하며 중복되지 않아야 한다.
  3. case에 일반 변수 사용 불가
final int ONE = 1;
int num, result;

switch(result){
    case '1': //문자 리터럴(정수 상수 49와 동일)
    case ONE: //변수이지만 위에서 상수(final)로 선언하여 가능
    case "YES": //문자열 리터럴. JDK1.7부터 허용
    case num: //Error! 변수 불가
    case 1.0: //Error! 실수 불가
}

4.2.4 switch 여러 특정 조건 만족

swith(month){
    case 3: case 4: case 5:
        System.out.println("봄");
        break;
}

4.2.5 switch 중첩

  • break문을 빼 먹지 않게 조심
switch(gender){
    case '1': case '3':
        switch(gender){
            case '1': break;
            case '3': break;
        }
}