SMALL
📚 Java 12+ Switch Expression(표현식) 사용법
Java 12부터 **switch가 표현식(Expression)**으로 사용될 수 있습니다. switch를 표현식으로 사용하면 더 간결하고 명확한 코드를 작성할 수 있습니다.
✅ 1. 기본 Switch 문 (Statement 방식)
📌 예제: 요일 출력하기
public class SwitchStatementExample {
public static void main(String[] args) {
String day = "MONDAY";
String type;
switch (day) {
case "MONDAY":
case "TUESDAY":
case "WEDNESDAY":
case "THURSDAY":
case "FRIDAY":
type = "Weekday";
break;
case "SATURDAY":
case "SUNDAY":
type = "Weekend";
break;
default:
type = "Invalid day";
}
System.out.println("Day type: " + type);
}
}
🔄 문제점:
- 코드가 길어지고 가독성이 떨어질 수 있습니다.
- 중복 case가 많을 경우 코드가 복잡해집니다.
✅ 2. Switch 표현식 (Java 12 이상)
📌 예제: switch 표현식으로 변환
public class SwitchExpressionExample {
public static void main(String[] args) {
String day = "MONDAY";
String type = switch (day) {
case "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY" -> "Weekday";
case "SATURDAY", "SUNDAY" -> "Weekend";
default -> "Invalid day";
};
System.out.println("Day type: " + type);
}
}
✅ 3. Switch Expression with yield (Java 13 이상)
yield 키워드를 사용하여 값을 반환할 수 있습니다.
public class SwitchYieldExample {
public static void main(String[] args) {
String day = "MONDAY";
String type = switch (day) {
case "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY" -> {
System.out.println("Processing a weekday");
yield "Weekday";
}
case "SATURDAY", "SUNDAY" -> {
System.out.println("Processing a weekend");
yield "Weekend";
}
default -> {
System.out.println("Invalid day input");
yield "Invalid day";
}
};
System.out.println("Day type: " + type);
}
}
🔑 yield 설명:
- 블록 {} 내에서 값을 반환할 때 yield를 사용합니다.
- 복잡한 로직이 필요한 경우 유용합니다.
✅ 4. Enum과 Switch 표현식
📌 예제: Enum 사용
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class SwitchEnumExample {
public static void main(String[] args) {
Day day = Day.MONDAY;
String type = switch (day) {
case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> "Weekday";
case SATURDAY, SUNDAY -> "Weekend";
};
System.out.println("Day type: " + type);
}
}
✅ 설명:
- switch 표현식은 default를 요구하지 않습니다. (모든 enum 값이 처리된 경우)
✅ 5. Switch 표현식과 반환값 사용
📌 예제: 계산기 프로그램
public class SwitchExpressionCalculator {
public static void main(String[] args) {
int a = 10;
int b = 5;
String operator = "+";
int result = switch (operator) {
case "+" -> a + b;
case "-" -> a - b;
case "*" -> a * b;
case "/" -> a / b;
default -> throw new IllegalArgumentException("Invalid operator");
};
System.out.println("결과: " + result);
}
}
✅ 설명:
- switch 표현식에서 바로 값을 반환할 수 있습니다.
- default를 통해 예외 처리를 명확히 할 수 있습니다.
✅ 6. Switch 표현식 vs Switch 문
Switch 문 | Switch 표현식 |
case와 break 필요 | -> 화살표 사용 |
블록 내에서 코드 실행 | 값을 반환 |
default 필요 | 모든 경우 처리되면 default 필요 없음 |
복잡하고 길어질 수 있음 | 간결하고 명확함 |
✅ 7. Switch 표현식 활용 예제
📌 예제: 학생 점수 등급 매기기
public class SwitchGradeExample {
public static void main(String[] args) {
int score = 85;
String grade = switch (score / 10) {
case 10, 9 -> "A";
case 8 -> "B";
case 7 -> "C";
case 6 -> "D";
default -> "F";
};
System.out.println("학생 등급: " + grade);
}
}
✅ 설명:
- 숫자 범위에 따라 switch를 사용할 수 있습니다.
- / 10을 통해 10단위로 점수를 나눕니다.
✅ 8. 주의사항
- Java 12 이상에서만 switch 표현식을 사용할 수 있습니다.
- yield는 Java 13+ 버전에서 지원됩니다.
- 모든 경우가 처리되지 않으면 컴파일 오류가 발생할 수 있습니다.
✅ 9. 결론
- 간결성: 코드가 더 명확하고 읽기 쉬워집니다.
- 안정성: 모든 경우가 처리되도록 설계됩니다.
- 유연성: 표현식으로 사용할 수 있어 값 반환이 가능합니다.
LIST
'자바 (JAVA)' 카테고리의 다른 글
📚 자바 클래스와 객체 연습문제 10개 및 풀이, 실행 결과 (0) | 2025.01.07 |
---|---|
📚 자바 배열 연습문제 (0) | 2025.01.07 |
📚 자바 반복문 문제 풀이 (0) | 2025.01.06 |
📚 자바 조건문 연습문제 (0) | 2025.01.06 |
📚JAVA 12강: JDBC (Java Database Connectivity) (0) | 2025.01.03 |