PHpullh
학습 라이브러리/Java/조건문 & 반복문 & switch expression

JAVA · 기초 문법

조건문 & 반복문 & switch expression

Java의 전통적 제어흐름과 Java 14+의 switch 표현식으로 코드를 더 안전하게 작성합니다.

기초 문법입문switch expressionyieldenhanced-forternaryJava 14

핵심 설명

Java의 전통적 제어흐름과 Java 14+의 switch 표현식으로 코드를 더 안전하게 작성합니다.

Java code

public class ControlFlow {
    public static void main(String[] args) {
        // if-else
        int score = 85;
        String grade = score >= 90 ? "A" :
                       score >= 80 ? "B" :
                       score >= 70 ? "C" : "F";

        // switch expression (Java 14+) — 값 반환, break 불필요
        String result = switch (score / 10) {
            case 10, 9 -> "우수";
            case 8     -> "양호";
            case 7     -> "보통";
            default    -> "미흡";
        };

        // switch expression with yield
        int dayNum = 3;
        String day = switch (dayNum) {
            case 1 -> "월요일";
            case 2 -> "화요일";
            case 3 -> {
                System.out.println("수요일 처리");
                yield "수요일";   // 블록에서 값 반환
            }
            default -> "기타";
        };

        // 향상된 for 루프
        int[] nums = {1, 2, 3, 4, 5};
        int sum = 0;
        for (int n : nums) sum += n;

        // 레이블 break (중첩 루프 탈출)
        outer:
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (i == 1 && j == 1) break outer;
                System.out.print(i + "" + j + " ");
            }
        }
        System.out.println();

        System.out.println(grade + " / " + result + " / " + day);
    }
}

학습 팁

새 switch expression은 모든 케이스를 커버하지 않으면 컴파일 에러가 납니다. 전통적 switch문보다 안전합니다.

주의할 점

전통적 switch 문에서 break를 빠뜨리면 다음 case로 fall-through됩니다. 의도치 않은 경우 버그의 원인이 됩니다. Java 14+의 -> 표현식은 fall-through가 없습니다.

자주 묻는 질문

조건문 & 반복문 & switch expression란 무엇인가요?

Java의 전통적 제어흐름과 Java 14+의 switch 표현식으로 코드를 더 안전하게 작성합니다.

조건문 & 반복문 & switch expression 학습 시 주의할 점은 무엇인가요?

전통적 switch 문에서 break 를 빠뜨리면 다음 case로 fall-through됩니다. 의도치 않은 경우 버그의 원인이 됩니다. Java 14+의 -> 표현식은 fall-through가 없습니다.