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
문은 여러 조건을 처리해야 할 때 코드를 더 직관적으로 작성할 수
있도록 도와줍니다.