본문 바로가기

JAVA

[JAVA] 제어문 (switch ~ case ~ break문)

반응형
 if문을 사용하여 특정 조건을 비교해서 내용부 실행을 제어할 수 있다. 그러나 if문은 종적인 관계로 비교하기 때문에 조건이 많아질수록 실행 속도는 현저하게 떨어지게 된다. 그래서 비교 구문 중에 byte, shor, char, int 자료형의 데이터 값에 대한 비교에서는 횡적인 관계로 비교할 수 있는 구문을 내놓게 되었고 그것이 'switch ~ case ~ break' 문이다. 이것은 컴파일 시에 그 위치를 JVM이 기억하기 때문에 값이 대입되는 즉시 해당 위치로 이동할 수 있다.

 switch (byte, short, char, int 자료형의 값을 나타낼 수 있는 필드나 메서드) {

  case 값1 : 내용부, 내용부, ……; bread;
  case 값2 : 내용부, 내용부, ……; bread;
  ……
  case 값n : 내용부; 내용부; ……; break;
  default : 내용부; 내용부; ……;
}

 durldptj switch의 값으로는 byte, short, char, int의 네가지 자료형 외에는 사용할 수 없다. 당연히 case에서 비교되는 값도 이 네가지 자료형만 사용할 수 있다. 또한 case는 여러 개의 값을 비교할 수 있도록 위의 형식과 같이 중첩하여 사용할 수 있고 if문의 else와 동일하게 비교되는 값중에 switch의 값과 동일한 값이 없을 경우에 그 위치를 처리해 주는 defualt라는 구문도 있다.

 | Exampe ① |
System.out.print("숫자를 입력하여 주세요(0~9) : ");
int x = System.in.read() - 48;

  switch(x) {

    case 0 : System.out.println("0을 입력했습니다."); break;
    case 1 : System.out.println("1을 입력했습니다."); break;
    case 2 : System.out.println("2를 입력했습니다."); break;
    ……
    case 9 : System.out.println("9를 입력했습니다."); break;
    default : System.out.println("0~9를 벗어난 수를 입력했습니다.");
}
| Exampe ② |
System.out.print("주민번호 7번째 수를 입력하세요 : ");
int x = System.in.read() - 48;

  switch(x) {

    case 9 :
    case 0 : year = 1800; break;
    case 1 :
    case 2 : year = 1900; break;
    case 9 : System.out.println("9를 입력했습니다."); break;
    default : System.out.println("0~9를 벗어난 수를 입력했습니다.");
}

반응형

'JAVA' 카테고리의 다른 글

[JAVA] 제어문 (while문, do ~ while문)  (0) 2012.01.02
[JAVA] 제어문 (for 문)  (0) 2011.12.28
[JAVA] 제어문 (if문의 3형식)  (0) 2011.12.27
[JAVA] 연사자 우선순위  (0) 2011.12.19
[JAVA] Systme 클래스  (1) 2011.12.19