Responsive Advertisement

Java Switch Statements: 효율적인 조건문 활용

Java에서 Switch 문은 여러 조건을 간단하고 효율적으로 처리할 수 있는 구조를 제공합니다. if...else 문에 비해 가독성이 좋고, 특정 값에 따라 실행될 코드를 쉽게 작성할 수 있어 유용합니다. 이번 글에서는 Switch 문법활용법, 그리고 사용 시 주의할 점을 알아보겠습니다.

1. Switch 문 기본 구조

switch 문은 표현식의 결과 값에 따라 실행될 코드를 결정합니다. case 키워드로 조건을 지정하고, break 문으로 실행을 종료합니다. 기본값은 default로 처리합니다.

Switch 문법

switch (표현식) {
    case 값1:
        // 값1에 해당하는 코드
        break;
    case 값2:
        // 값2에 해당하는 코드
        break;
    ...
    default:
        // 위의 어떤 값에도 해당하지 않는 경우 실행되는 코드
}

예제: 요일 출력

public class SwitchExample {
    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;
            default:
                System.out.println("주말");
        }
    }
}

출력 결과:

수요일

위 예제에서 day 값이 3이므로 "수요일"이 출력됩니다. break 문이 없으면 다음 case 블록이 계속 실행됩니다.

2. Switch 문의 특징

  • Switch 문은 정수, 문자, 문자열, 열거형(Enum)을 표현식으로 사용할 수 있습니다.
  • break 문을 사용하지 않으면 다음 case로 실행이 이어지는 Fall-Through가 발생합니다.
  • default는 필수가 아니지만, 모든 경우를 처리하기 위해 작성하는 것이 좋습니다.

Fall-Through 예제

public class FallThroughExample {
    public static void main(String[] args) {
        int number = 2;

        switch (number) {
            case 1:
                System.out.println("하나");
            case 2:
                System.out.println("둘");
            case 3:
                System.out.println("셋");
                break;
            default:
                System.out.println("기타");
        }
    }
}

출력 결과:

둘
셋

위 코드에서 case 2break 문이 없기 때문에 case 3의 코드도 실행됩니다.

3. Switch 문 활용

3.1 문자열을 사용한 Switch

Java 7부터는 switch에서 문자열을 사용할 수 있습니다.

public class StringSwitchExample {
    public static void main(String[] args) {
        String role = "admin";

        switch (role) {
            case "admin":
                System.out.println("관리자 권한이 부여됩니다.");
                break;
            case "user":
                System.out.println("사용자 권한이 부여됩니다.");
                break;
            default:
                System.out.println("권한이 없습니다.");
        }
    }
}

출력 결과:

관리자 권한이 부여됩니다.

3.2 열거형(Enum)과 Switch

enum 타입은 Switch 문에서 자주 사용됩니다. 가독성이 좋고, 코드를 명확하게 작성할 수 있습니다.

public class EnumSwitchExample {
    enum Day {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }

    public static void main(String[] args) {
        Day today = Day.SATURDAY;

        switch (today) {
            case MONDAY:
            case TUESDAY:
            case WEDNESDAY:
            case THURSDAY:
            case FRIDAY:
                System.out.println("평일입니다.");
                break;
            case SATURDAY:
            case SUNDAY:
                System.out.println("주말입니다.");
                break;
        }
    }
}

출력 결과:

주말입니다.

4. Switch 문 작성 시 주의사항

  • Break 문: break 문을 생략하면 의도치 않은 Fall-Through가 발생할 수 있습니다.
  • Default 블록: default를 추가해 예외적인 경우를 처리하세요.
  • 복잡한 조건: Switch 문은 값 비교에 적합하며, 복잡한 조건식에는 if...else가 더 적합합니다.

5. If...Else와 Switch 비교

if...else 문은 복잡한 조건을 처리할 때 유리하지만, Switch 문은 간단한 값 비교에서 더 가독성이 좋고 효율적입니다.

Switch vs If...Else 예제

// If...Else
if (day == 1) {
    System.out.println("월요일");
} else if (day == 2) {
    System.out.println("화요일");
} else {
    System.out.println("기타");
}

// Switch
switch (day) {
    case 1:
        System.out.println("월요일");
        break;
    case 2:
        System.out.println("화요일");
        break;
    default:
        System.out.println("기타");
}

Switch 문은 조건이 많을수록 더 간결하고 효율적이라는 장점이 있습니다.

결론

Java의 Switch 문은 간단한 값 비교를 효율적으로 처리할 수 있는 강력한 도구입니다. 적절한 breakdefault 사용으로 코드를 명확하게 작성할 수 있으며, 문자열이나 enum 타입과도 잘 어울립니다. 이번 글에서 소개한 내용을 바탕으로 조건문을 최적화하고, 더 나은 코드를 작성해 보세요!

댓글 쓰기