코딩 스쿨 Java

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

Java Switch

Java Switch: 자바 switch 문법 가이드

switch은 Java에서 여러 가능한 값에 따라 다양한 코드 블록을 실행하는 조건문입니다. 이는 여러 if-else 문을 사용하는 대신 값을 한 번만 비교하여 각 경우에 따라 코드를 실행할 수 있는 깔끔한 방법을 제공합니다. 주로 값이 정수형, 문자형, 열거형, 문자열일 때 많이 사용됩니다.

이 가이드는 Java에서 switch을 사용하는 방법을 설명하고, 다양한 예제를 통해 이를 어떻게 활용할 수 있는지 보여줍니다.


1. switch 기본 구문

구문:

switch (표현식) {
    case 값1:
        // 값1일 때 실행되는 코드
        break;
    case 값2:
        // 값2일 때 실행되는 코드
        break;
    ...
    default:
        // 모든 case가 일치하지 않을 때 실행되는 코드
}

  • switch: 평가할 표현식을 지정합니다. 이 표현식은 정수형, 문자형, 열거형, 또는 문자열이 될 수 있습니다.
  • case 값: 표현식의 값이 case 값과 일치하면 해당 코드 블록이 실행됩니다.
  • break: 각 case 블록의 끝에서 **break*를 사용하여 switch 문을 종료합니다. 이를 사용하지 않으면 다음 case로 넘어가는 fall-through 현상이 발생합니다.
  • default: 모든 case가 일치하지 않을 때 기본적으로 실행될 코드입니다. **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;
            default:
                System.out.println("주말");
        }
    }
}

설명:

  • day 값이 3이므로 **"수요일"**이 출력됩니다.
  • *break*는 각 case가 실행된 후 switch 문을 종료합니다.
  • *default*는 어떤 case도 일치하지 않을 때 실행됩니다.

2. switch 문에서 break의 중요성

  • *break*는 switch 문에서 매우 중요합니다. **break*를 사용하지 않으면, 조건이 일치하더라도 모든 그다음 case들이 차례로 실행됩니다. 이를 fall-through라고 합니다.

예시 (break가 없는 경우):

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

        switch (day) {
            case 1:
                System.out.println("월요일");
            case 2:
                System.out.println("화요일");
            case 3:
                System.out.println("수요일");
            default:
                System.out.println("주말");
        }
    }
}

설명:

  • day 값이 2이므로 **"화요일"**부터 출력되지만, **break*가 없기 때문에 **"수요일"**과 **"주말"**까지 모두 출력됩니다.
  • 결과: "화요일", "수요일", "주말"이 모두 출력됩니다.

3. switch와 문자열

Java에서는 문자열(String) 값을 switch 문에서 사용할 수 있습니다.

사용 예:

public class SwitchString {
    public static void main(String[] args) {
        String fruit = "apple";

        switch (fruit) {
            case "apple":
                System.out.println("사과");
                break;
            case "banana":
                System.out.println("바나나");
                break;
            case "orange":
                System.out.println("오렌지");
                break;
            default:
                System.out.println("알 수 없는 과일");
        }
    }
}

설명:

  • *fruit 값이 "apple"*이므로 **"사과"**가 출력됩니다.
  • 문자열 비교도 정수형처럼 **case*와 일치하면 해당 코드 블록이 실행됩니다.

4. switch와 열거형 (Enum)

Java의 **열거형(Enum)**을 사용하면 정의된 상수 집합을 처리하는 데 switch 문을 사용할 수 있습니다. 열거형은 특정 값만을 가지는 상수를 선언할 때 유용합니다.

열거형 선언:

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

사용 예:

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

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

        switch (today) {
            case MONDAY:
                System.out.println("월요일입니다.");
                break;
            case WEDNESDAY:
                System.out.println("수요일입니다.");
                break;
            case FRIDAY:
                System.out.println("금요일입니다.");
                break;
            default:
                System.out.println("평일입니다.");
        }
    }
}

설명:

  • *today 값이 WEDNESDAY*이므로 **"수요일입니다."**가 출력됩니다.
  • 열거형을 사용하면 정의된 상수 집합 내에서만 값이 사용되므로 코드 안정성이 높아집니다.

5. switch 문에서의 default

  • *default*는 모든 **case*와 일치하지 않는 경우에 실행되는 기본 블록입니다. default선택 사항이지만, 자주 사용하여 예상치 못한 상황을 처리할 수 있습니다.

사용 예:

public class SwitchDefault {
    public static void main(String[] args) {
        int month = 13;

        switch (month) {
            case 1:
                System.out.println("1월");
                break;
            case 2:
                System.out.println("2월");
                break;
            default:
                System.out.println("잘못된 월입니다.");
        }
    }
}

설명:

  • month 값이 13으로 어떤 case와도 일치하지 않으므로 default 블록이 실행되어 **"잘못된 월입니다."**가 출력됩니다.

6. 다중 case 처리 (Multiple Case Labels)

여러 case를 하나의 코드 블록으로 처리할 수 있습니다. 이 경우 여러 case에서 같은 동작을 해야 할 때 유용합니다.

사용 예:

public class SwitchMultipleCase {
    public static void main(String[] args) {
        int day = 1;

        switch (day) {
            case 1:
            case 7:
                System.out.println("주말입니다.");
                break;
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
                System.out.println("평일입니다.");
                break;
            default:
                System.out.println("잘못된 입력입니다.");
        }
    }
}

설명:

  • day 값이 1이므로 **"주말입니다."**가 출력됩니다.
  • 1과 7은 같은 동작을 하며, 다른 경우는 평일로 처리됩니다.

7. switch 표현식 (Java 12 이상)

Java 12부터는 switch 표현식을 도입하여 더 간결하게 코드를 작성할 수 있습니다. 이를 통해 switch 문을 표현식으로 사용하고, 반환값을 처리할 수 있습니다.

사용 예 (Java 12 이상):

public class SwitchExpression {
    public static void main(String[] args) {
        int day = 3;

        String dayName = switch (day) {
            case 1 -> "월요일";
            case 2 -> "화요일";
            case 3 -> "수요일";
            case 4 -> "목요일";
            case 5 -> "금요일";
            default -> "주말";
        };

        System.out.println(dayName);  // 출력: 수요일
    }
}

설명:

  • switch 표현식은 값을 반환하며, **>*를 사용해 각 case의 실행 코드를 간결하게 작성할 수 있습니다.
  • 결과: "수요일" 출력.

8. switch 문 사용 예시

8.1. 계절을 출력하는 switch

public class SwitchSeasons {
    public static void main(String[] args) {

        int month = 4;

        switch (month) {
            case 12: case 1: case 2:
                System.out.println("겨울입니다.");
                break;
            case 3: case 4: case 5:
                System.out.println("봄입니다.");
                break;
            case 6: case 7: case 8:
                System.out.println("여름입니다.");
                break;
            case 9: case 10: case 11:
                System.out.println("가을입니다.");
                break;
            default:
                System.out.println("잘못된 월입니다.");
        }
    }
}

8.2. 간단한 계산기 switch

public class SwitchCalculator {
    public static void main(String[] args) {
        char operator = '+';
        int num1 = 10, num2 = 20;

        switch (operator) {
            case '+':
                System.out.println("결과: " + (num1 + num2));
                break;
            case '-':
                System.out.println("결과: " + (num1 - num2));
                break;
            case '*':
                System.out.println("결과: " + (num1 * num2));
                break;
            case '/':
                System.out.println("결과: " + (num1 / num2));
                break;
            default:
                System.out.println("잘못된 연산자입니다.");
        }
    }
}


요약

Java에서 switch은 여러 조건을 처리할 때 유용한 구조입니다. 정수, 문자, 문자열, 열거형(Enum) 값 등을 비교할 수 있으며, 각 case에 따라 코드 블록을 실행합니다. break 문을 사용해 각 case 블록을 종료해야 하며, default 블록은 어떤 값도 일치하지 않을 때 실행됩니다. Java 12 이상에서는 switch 표현식을 통해 더 간결한 코드를 작성할 수 있습니다. switch 문은 여러 조건을 처리해야 할 때 코드를 더 직관적으로 작성할 수 있도록 도와줍니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com