Please Enable JavaScript!
Gon[ Enable JavaScript ]

자바(Java) switch case 구문 사용하기

자바(JAVA)
반응형

“switch” 문은 특정 변수의 값을 기반으로 프로그램의 흐름을 제어하는 데 사용되는 제어문 중 하나입니다. “switch” 문은 여러 가지 가능한 값을 가진 변수를 평가하고, 각 값에 따라 다른 코드 블록을 실행할 수 있습니다.

 


 

 

◎ 구문

 

“switch” 뒤에 괄호 안에는 변수가 위치하며, 해당 변수의 값이 각 “case” 블록과 비교합니다. “case” 블록은 특정 값에 대한 실행 코드를 포함하고 있습니다. “break” 문은 해당 “case” 블록을 빠져나가게 합니다. “break”를 사용하지 않으면 해당 “case”에서 시작하여 다음 “case”로 계속 실행되기 때문에 주의해야 합니다. “default”는 어떤 “case”에도 해당하지 않을 때 실행되는 블록으로, 선택적으로 사용될 수 있습니다. 

switch (변수) {
    case 값1:
        // 값1에 해당하는 코드
        break;
    case 값2:
        // 값2에 해당하는 코드
        break;
    // 추가적인 case 블록들
    default:
        // 모든 case에 해당하지 않을 때 실행할 코드 (optional)
}

 

 

◎ 예제

 

예제는 “day” 변수의 값에 따라 요일을 출력하는 간단한 프로그램입니다. “switch” 문은 “day” 변수의 값과 각 “case”에 있는 값과 비교하며, 일치하는 경우 해당 “case” 블록을 실행합니다. “break” 문이 없는 “case 6:”“case 7:”에서는 같은 코드 블록이 실행되며, 이는 여러 “case”에서 동일한 동작을 수행할 때 사용할 수 있는 기능입니다. “default”는 어떤 “case”에도 해당하지 않을 때 실행되는 블록으로, 여기서는 유효하지 않은 날짜를 나타내는 메시지를 출력합니다. 

public class DayOfWeek {
    public static void main(String[] args) {
        int day = 3;
 
        switch (day) {
            case 1:
                System.out.println("월요일");
                break;
            case 2:
                System.out.println("화요일");
                break;
            case 3:
                System.out.println("수요일");
                break;
            case 4:
                System.out.println("목요일");
                break;
            case 5:
                System.out.println("금요일");
                break;
            case 6:
            case 7:
                System.out.println("주말");
                break;
            default:
                System.out.println("유효하지 않은 날짜");
        }
    }
}
 
[출력]
수요일

 

 

Switch 문에서 주의해야 될 점과 팁

 

1. “case” 블록의 마지막에 “break” 사용

 

“case” 블록의 실행이 끝나면 “break” 문을 사용하여 “switch” 문을 빠져나가야 합니다. 그렇지 않으면 해당 “case”에서 시작하여 다음 “case”로 계속 실행합니다. 

switch (day) {
    case 1:
        System.out.println("월요일");
        break;
    case 2:
        System.out.println("화요일");
        // break;가 빠져있으면 다음 case로 계속 진행됨
    case 3:
        System.out.println("수요일");
        break;
    // ...
}

 

 

2. 같은 코드 블록을 여러 “case”에서 공유

 

여러 “case”에서 동일한 동작을 수행해야 할 경우 해당 “case”들을 같은 코드 블록으로 공유할 수 있습니다. 이 경우 “break” 문을 생략하고 여러 “case”를 한 번에 처리할 수 있습니다. 

switch (day) {
    case 6:
    case 7:
        System.out.println("주말");
        break;
    // ...
}

 

 

3. 비교 대상은 항상 정수 또는 문자열

 

“switch” 문은 정수, 문자 또는 문자열 값에 대한 비교만 가능합니다. 부동 소수점, 불리언 등의 데이터 타입은 사용할 수 없습니다. 소스에서는 소수점이 저장된 double 형 변수로 비교하고 있습니다. 그래서 컴파일 결과 에러를 발생시킵니다. 

public class Main {
    public static void main(String[] args) {
        double value = 3.14;
 
        // 부동 소수점 값에 대한 switch 문은 허용되지 않음
        // 컴파일 에러 발생
        switch(value) {
            case 3.14:
                System.out.println("Value is pi.");
                break;
            default:
                System.out.println("Value is not pi.");
        }
    }
}
 
[출력]
컴파일 에러 발생: 부동 소수점 값에 대한 switch 문은 허용되지 않습니다.

 

 

두 번째는 boolean 형 변수를 사용해서 에러가 발생한 예제입니다. 

public class Main {
    public static void main(String[] args) {
        boolean isTrue = true;
 
        // 불리언 값에 대한 switch 문도 허용되지 않음
        // 컴파일 에러 발생
        switch(isTrue) {
            case true:
                System.out.println("Value is true.");
                break;
            default:
                System.out.println("Value is false.");
        }
    }
}
 
[출력]
컴파일 에러 발생: 불리언 값에 대한 switch 문은 허용되지 않습니다.

 

 

4. ”case” 값은 상수 또는 리터럴이어야 함

 

“case” 블록 안의 값은 변수일 수 없고, 상수 또는 리터럴이어야 합니다. 메모리 주소가 저장되어 있는 참조 타입 변수는 사용할 수 없습니다. 

final int MONDAY = 1;
 
switch (day) {
    case MONDAY:
        // 올바른 사용
        break;
    case dayVariable:  // 오류: 변수는 사용할 수 없음
        // ...
}

 

 

5. ”default”는 선택적이지만 유용함

 

“default” 블록은 어떤 “case”에도 매칭되지 않을 때 실행되는 블록입니다. 모든 경우를 처리하는 것이 좋지만, 필수는 아닙니다. 하지만 예상치 못한 값에 대한 처리를 추가로 할 수 있어 유용합니다.

반응형
Posted by 녹두장군1
,