๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Language/Java

[Java]์ž๋ฐ” switch ๋ฌธ: ์กฐ๊ฑด๋ฌธ์˜ ๊ฐ•๋ ฅํ•œ ๋Œ€์•ˆ

by YJ Dev 2024. 5. 9.
728x90
๋ฐ˜์‘ํ˜•
SMALL

Java ์กฐ๊ฑด๋ฌธ ์ค‘ switch๋ฌธ์€ ํŠน์ • ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ž๋ฐ” switch ๋ฌธ์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์กฐ๊ฑด๋ฌธ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ํ•ต์‹ฌ์ ์ธ ์š”์†Œ์ž…๋‹ˆ๋‹ค.
์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” if๋ฌธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”! ์•„์ง ๋ชป๋ณด์‹  ๋ถ„๋“ค์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ํ™•์ธํ•ด ์ฃผ์„ธ์š”๐Ÿ˜

""

[Java]์ž๋ฐ”์—์„œ ์กฐ๊ฑด๋ฌธ ํ™œ์šฉํ•˜๊ธฐ: if ๋ฌธ์˜ ํ™œ์šฉ๊ณผ ์˜ˆ์‹œ ์ฝ”๋“œ

๋ชฉ์ฐจ1. if๋ฌธ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ2. ๋‹จ์ˆœ if ๋ฌธ ์˜ˆ์ œ3. if-else ๋ฌธ ์˜ˆ์ œ4. ๋‹ค์ค‘ ์กฐ๊ฑด์„ ๋‹ค๋ฃจ๋Š” if-else if-else ๋ฌธ ์˜ˆ์ œ5. ์ค‘์ฒฉ if ๋ฌธ ์˜ˆ์ œ6. ํ•ต์‹ฌ ๋‚ด์šฉํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์กฐ๊ฑด๋ฌธ์€ ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„

creativevista.tistory.com

์ž๋ฐ” switch๋ฌธ


1. switch ๋ฌธ์˜ ๊ตฌ์กฐ๐Ÿ 

switch ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ case๋Š” ํ‘œํ˜„์‹์˜ ๊ฐ’๊ณผ ๋น„๊ต๋˜๋ฉฐ, ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ผ์น˜ํ•˜๋Š” case๊ฐ€ ์—†๋‹ค๋ฉด default ๋ธ”๋ก์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

switch (ํ‘œํ˜„์‹) {
    case ๊ฐ’1:
        // ๊ฐ’1์— ํ•ด๋‹นํ•˜๋Š” ์ž‘์—… ์ˆ˜ํ–‰
        break; // ์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ํ›„ break; ๋งŒ๋‚˜๋ฉด stop
    case ๊ฐ’2:
        // ๊ฐ’2์— ํ•ด๋‹นํ•˜๋Š” ์ž‘์—… ์ˆ˜ํ–‰
        break; // ์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ํ›„ break; ๋งŒ๋‚˜๋ฉด stop
    ...
    default:
        // ์œ„์˜ ์–ด๋–ค case์—๋„ ํ•ด๋‹นํ•˜์ง€ ์•Š์„ ๋•Œ์˜ ๊ธฐ๋ณธ ์ž‘์—… ์ˆ˜ํ–‰
}


์•„๋ž˜ ์ฝ”๋“œ๋Š” ์ฃผ์–ด์ง„ ๋“ฑ์ˆ˜์— ๋”ฐ๋ผ ํ•ด๋‹นํ•˜๋Š” ๋ฉ”๋‹ฌ์˜ ์ƒ‰์„ ๊ฒฐ์ •ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

public class Main {
    public static void main(String[] args) {
        int ranking = 2; // ์˜ˆ์‹œ๋กœ 2๋“ฑ ์„ค์ •
        char medalColor;

        switch (ranking) {
            case 1:
                medalColor = '๊ธˆ';
                break;
            case 2:
                medalColor = '์€';
                break;
            case 3:
                medalColor = '๋™';
                break;
            default:
                medalColor = 'C';
                break;
        }

        System.out.println(ranking + "๋“ฑ ๋ฉ”๋‹ฌ์˜ ์ƒ‰์€ " + medalColor + " ์ž…๋‹ˆ๋‹ค.");
    }
}

2. switch ๋ฌธ์˜ ํ™œ์šฉ๐Ÿก

switch ๋ฌธ์€ ์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ์—ฌ๋Ÿฌ ์กฐ๊ฑด๋ฌธ์ด ์กด์žฌํ•  ๋•Œ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉ
  • ์ •์ˆ˜, ๋ฌธ์ž, ๋ฌธ์ž์—ด ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์—์„œ ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ
  • ํŠน์ • ๊ฐ’์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ์ œ์–ดํ•  ๋•Œ
public class Main {
    public static void main(String[] args) {
        // dayOfWeek ๋ณ€์ˆ˜์— ํ˜„์žฌ ์š”์ผ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
        int dayOfWeek = 3;
        // dayType ๋ณ€์ˆ˜๋Š” ์š”์ผ์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
        String dayType;

        // switch ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ผ์— ๋”ฐ๋ฅธ ๋™์ž‘์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
        switch (dayOfWeek) {
            // case 1๊ณผ case 7์€ ์ฃผ๋ง๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
            case 1:
            case 7:
                dayType = "์ฃผ๋ง";
                break;
            // case 2๋ถ€ํ„ฐ case 6๊นŒ์ง€๋Š” ํ‰์ผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
                dayType = "ํ‰์ผ";
                break;
            // ๊ทธ ์™ธ์˜ ๊ฐ’์€ ์ž˜๋ชป๋œ ์š”์ผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
            default:
                dayType = "์ž˜๋ชป๋œ ์š”์ผ";
        }

        // ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
        System.out.println("์˜ค๋Š˜์€ " + dayType + "์ž…๋‹ˆ๋‹ค.");
    }
}


switch๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ฐ case์˜ ๊ฐ’์ด ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. switch์˜ ํ‘œํ˜„์‹์€ ์ •์ˆ˜, ๋ฌธ์ž, ๋ฌธ์ž์—ด ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด์—ฌ์•ผ ํ•˜๋ฉฐ case์˜ ๊ฐ’์€ ์ƒ์ˆ˜ ๋˜๋Š” ๋ฆฌํ„ฐ๋Ÿด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, default ๋ธ”๋ก์„ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


3. switch expression๐Ÿ’’

switch expression์€ Java 12๋ถ€ํ„ฐ ๋„์ž…๋œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์œผ๋กœ, switch ๋ฌธ์„ ํ‘œํ˜„์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์—๋Š” switch ๋ฌธ์€ ๋ฌธ(statement)์˜ ํ˜•ํƒœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ, switch expression์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. switch expression์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

result = switch (expression) {
    case value1 -> expression1;
    case value2 -> expression2;
    ...
    default -> expressionN;
};


์—ฌ๊ธฐ์„œ result๋Š” switch expression์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฐ›๋Š” ๋ณ€์ˆ˜์ด๊ณ , expression์€ ๋น„๊ตํ•  ๊ฐ’์ž…๋‹ˆ๋‹ค. ๊ฐ case๋Š” ํ•ด๋‹น ๊ฐ’๊ณผ ๋น„๊ต๋˜๋ฉฐ, ํ™”์‚ดํ‘œ (->) ๋’ค์—๋Š” ํ•ด๋‹น case์— ํ•ด๋‹น๋  ๋•Œ ๋ฐ˜ํ™˜ํ•  ํ‘œํ˜„์‹์ด ์˜ต๋‹ˆ๋‹ค. default๋Š” ์–ด๋–ค case์—๋„ ํ•ด๋‹นํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฐ˜ํ™˜ํ•  ๊ธฐ๋ณธ ํ‘œํ˜„์‹์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
switch expression์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ switch ๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์ด๊ณ  ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํŠนํžˆ switch๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, switch ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ผ์— ๋”ฐ๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ switch expression์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

String dayType = switch (dayOfWeek) {
    case 1, 7 -> "์ฃผ๋ง";
    case 2, 3, 4, 5, 6 -> "ํ‰์ผ";
    default -> "์ž˜๋ชป๋œ ์š”์ผ";
};


์ด๋ ‡๊ฒŒ ํ•˜๋ฉด switch ๋ฌธ๋ณด๋‹ค ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•ด์ง€๊ณ  ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
yield๋ฌธ์€ switch ํ‘œํ˜„์‹ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ํ•ด๋‹น case์˜ ์‹คํ–‰์„ ์ข…๋ฃŒํ•˜๊ณ  ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. switch ํ‘œํ˜„์‹์—์„œ ๊ฐ case์—๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋Œ€์‹ ์— yield ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. yield ๋ฌธ์€ switch ํ‘œํ˜„์‹์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.

result = switch (expression) {
    case value1 -> {
        // ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ
        yield expression1;
    }
    case value2 -> {
        // ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ
        yield expression2;
    }
    ...
    default -> {
        // ์–ด๋–ค case์—๋„ ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ
        yield expressionN;
    }
};


์‚ฌ์šฉ์ž์˜ ๋‚˜์ด์— ๋”ฐ๋ผ ํ•ด๋‹นํ•˜๋Š” ๋“ฑ๊ธ‰์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋‚˜์ด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋“ฑ๊ธ‰์„ ๋ฐ˜ํ™˜ํ•˜๋Š” switch ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ case์—์„œ๋Š” ํ•ด๋‹นํ•˜๋Š” ๋‚˜์ด ๋ฒ”์œ„์— ๋”ฐ๋ผ ๋“ฑ๊ธ‰์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , default์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ฑ์ธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹น์‹ ์€ ์„ฑ์ธ์ž…๋‹ˆ๋‹ค. ์™€ ๊ฐ™์ด ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

public class Main {
    public static void main(String[] args) {
        int age = 25;
        String grade = switch (age) {
            case 12, 13 -> yield "์ดˆ๋“ฑํ•™์ƒ";
            case 14, 15, 16 -> yield "์ค‘ํ•™์ƒ";
            case 17, 18, 19 -> yield "๊ณ ๋“ฑํ•™์ƒ";
            default -> yield "์„ฑ์ธ";
        };
        System.out.println("๋‹น์‹ ์€ " + grade + "์ž…๋‹ˆ๋‹ค.");
    }
}

4. ํ•ต์‹ฌ ๋‚ด์šฉ๐Ÿ‘€

์ž๋ฐ” switch๋ฌธ

728x90
๋ฐ˜์‘ํ˜•