0Pricing
Java Academy · 강의

yield 키워드

switch 블록에서 값을 생성합니다

yield 키워드은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

한 줄로 부족할 때

case 1 -> 42;와 같은 화살표 분기는 값을 직접 반환합니다. 하지만 값을 생성하기 전에 분기에서 여러 문을 실행해야 한다면 어떻게 해야 할까요? 이때 yield를 사용합니다.

yield 키워드

블록 분기 { } 안에서 yield 키워드는 switch 표현식이 생성할 값을 제공합니다. return과 비슷하지만 switch 분기를 위한 것이라고 생각하면 됩니다.

public class Main {
    public static void main(String[] args) {
        int n = 3;
        int result = switch (n) {
            case 3 -> {
                int squared = n * n;
                yield squared;
            }
            default -> 0;
        };
        System.out.println(result);
    }
}

블록 안에서 yield 사용하기

yield를 호출하기 전에 블록 안에서 어떤 로직이든 실행할 수 있습니다. 블록의 마지막 작업은 값을 yield하는 것이어야 합니다.

public class Main {
    public static void main(String[] args) {
        int amount = 250;
        String label = switch (amount / 100) {
            case 0 -> "small";
            default -> {
                System.out.println("Computing label...");
                yield "large";
            }
        };
        System.out.println(label);
    }
}

화살표 분기와 블록 분기 섞어 사용하기

하나의 switch 표현식에서 간단한 화살표 분기와 yield를 사용하는 블록 분기를 함께 사용할 수 있습니다. 각 경우에 맞는 방식을 사용하십시오.

public class Main {
    public static void main(String[] args) {
        int code = 2;
        String msg = switch (code) {
            case 1 -> "One";
            case 2 -> {
                String s = "T" + "wo";
                yield s;
            }
            default -> "Other";
        };
        System.out.println(msg);
    }
}

yield 전 계산하기

값을 계산해야 할 때는 블록 분기가 적합합니다. 여기서는 합계를 yield하기 전에 숫자들을 더합니다.

public class Main {
    public static void main(String[] args) {
        int category = 1;
        int value = switch (category) {
            case 1 -> {
                int sum = 0;
                for (int i = 1; i <= 5; i++) {
                    sum += i;
                }
                yield sum;
            }
            default -> 0;
        };
        System.out.println(value);
    }
}

yield와 return 비교

yield는 switch 분기만 종료하고 값을 돌려줍니다. return은 메서드 전체를 종료합니다. switch 표현식의 블록 안에서는 yield를 사용하십시오.

public class Main {
    static int classify(int n) {
        int rank = switch (n) {
            case 0 -> 0;
            default -> {
                yield (n > 0) ? 1 : -1;
            }
        };
        return rank;
    }
    public static void main(String[] args) {
        System.out.println(classify(-7));
    }
}

기존 콜론 방식에서 yield 사용하기

콜론 방식의 switch도 break 대신 yield를 사용하여 표현식으로 만들 수 있습니다. 각 레이블이 지정된 영역에서 값을 yield합니다.

public class Main {
    public static void main(String[] args) {
        int day = 2;
        String name = switch (day) {
            case 1: yield "Mon";
            case 2: yield "Tue";
            default: yield "Other";
        };
        System.out.println(name);
    }
}

조건에 따른 yield

블록 분기에는 if 로직을 포함하여 경로에 따라 서로 다른 값을 yield할 수 있습니다. 모든 경로에서 값을 yield해야 합니다.

public class Main {
    public static void main(String[] args) {
        int temp = 30;
        String advice = switch (temp / 10) {
            case 3 -> {
                if (temp > 35) {
                    yield "Very hot";
                }
                yield "Warm";
            }
            default -> "Mild";
        };
        System.out.println(advice);
    }
}

객체 yield하기

yield는 객체를 포함한 모든 형식에서 사용할 수 있습니다. 여기서는 한 분기에서 StringBuilder 결과를 만들고 String으로 yield합니다.

public class Main {
    public static void main(String[] args) {
        int count = 3;
        String stars = switch (count) {
            case 0 -> "";
            default -> {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < count; i++) {
                    sb.append("*");
                }
                yield sb.toString();
            }
        };
        System.out.println(stars);
    }
}

가독성 팁

하나의 값으로 충분할 때는 간단한 화살표 분기를 우선 사용하십시오. 분기에 실제로 추가 문이 필요할 때만 블록과 yield를 사용하십시오. 이렇게 하면 switch를 깔끔하게 유지할 수 있습니다.

public class Main {
    public static void main(String[] args) {
        int level = 2;
        int xp = switch (level) {
            case 1 -> 100;
            case 2 -> {
                int base = 100;
                yield base * 2;
            }
            default -> 0;
        };
        System.out.println(xp);
    }
}

완전한 예제

화살표 분기와 블록 분기를 모두 사용하는 HTTP 방식의 상태 매퍼를 함께 살펴보겠습니다.

public class Main {
    public static void main(String[] args) {
        int status = 404;
        String message = switch (status / 100) {
            case 2 -> "Success";
            case 4 -> {
                String base = "Client error ";
                yield base + status;
            }
            case 5 -> "Server error";
            default -> "Unknown";
        };
        System.out.println(message);
    }
}

빠른 확인

여러 문으로 이루어진 switch 표현식 분기에서 결과값을 제공하는 키워드는 무엇입니까?

복습

yield 키워드를 배웠습니다.

  • yield는 블록 분기에서 값을 생성합니다.
  • return과 비슷하지만 switch 분기만을 위한 것입니다.
  • 화살표 분기와 블록 분기를 자유롭게 섞어 사용할 수 있습니다.
  • 블록의 모든 코드 경로에서 yield해야 합니다.
  • 추가 문이 필요할 때만 블록을 사용하십시오.

자주 묻는 질문

“yield 키워드” 강의는 무료인가요?

네 — “yield 키워드” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“yield 키워드”에서 뭘 배우나요?

switch 블록에서 값을 생성합니다 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Java Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“yield 키워드” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 화살표 스타일 switch
  2. 표현식으로서의 switch
  3. yield 키워드
  4. 다중 레이블 case
← Java Academy(으)로 돌아가기