์กฐ๊ฑด์ด ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ if-else ๋˜๋Š” switch ๋ฌธ์„ ์‚ฌ์šฉํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ if-else ์— ๋Œ€ํ•œ ์ด ๋Œ€์•ˆ์—๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ์Šค์œ„์น˜ ๋ฌธ์„ "์•ˆํ‹ฐ ํŒจํ„ด"์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค .

์ €๊ฒŒ ๋ญ์•ผ? ์•ˆํ‹ฐํŒจํ„ด์€ ๋ถˆ๋Ÿ‰ ์ฝ”๋“œ์˜ ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด, ์ฆ‰ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ถˆ๋Ÿ‰ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์ €ํ•˜์‹œํ‚ค๋ฏ€๋กœ ์ฝ”๋“œ์—์„œ ์ด๋ฅผ ํ”ผํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ข‹์€ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ Java๋Š” ์–ธ์–ด ๊ตฌ๋ฌธ์— ๋งŽ์€ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ์™”๊ณ  ์ด๋Ÿฌํ•œ ๋ณ€ํ™” ์ค‘ ํ•˜๋‚˜๊ฐ€ switch ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค . ํฅ๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋Ÿผ ๋‹ค์ด๋น™ํ•˜๋Ÿฌ ๊ฐ‘์‹œ๋‹ค.

์šฐ์„  ์Šค์œ„์น˜๊ฐ€ ์•ˆํ‹ฐํŒจํ„ด์ธ ์ด์œ ๋ฅผ ๋ช…ํ™•ํžˆ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

switch (condition) {
    case "DECEMBER":
        seasonNumber = 1;
        break;
    case "JANUARY":
        seasonNumber = 1;
        break;
    case "FEBRUARY":
        seasonNumber = 1;
        break;
    default:
        seasonNumber = 0;
}

์ž, ์ด๊ฒƒ์ด ์™œ "์•ˆํ‹ฐ ํŒจํ„ด"์ธ์ง€๋Š” ์•„์ง ์™„์ „ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ผ€์ด์Šค ๋ธ”๋ก์„ ๋” ์ถ”๊ฐ€ํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

switch (condition) {
    case "DECEMBER":
        seasonNumber = 1;
        break;
    case "JANUARY":
        seasonNumber = 1;
        break;
    case "FEBRUARY":
        seasonNumber = 1;
        break;
    case โ€œMARCHโ€:
        seasonNumber = 2;
        break;
    case โ€œAPRILโ€:
        seasonNumber = 2;
        break;
    case โ€œMAYโ€:
        seasonNumber = 2;
        break;
    default:
        seasonNumber = 0;
}

๋ช‡ ์ค„์„ ๋” ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง‘๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์šฐ๋ฆฌ๋Š” ๋” ๋งŽ์€ ์ค„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•„๋ฌด๋„ ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์— ๊ฐ„๊ฒฐํ•œ switch ๋ฌธ์„ ์ƒ์„ฑํ•œ ํ›„ ์šฐ๋ฆฌ๋Š” ์ ์  ๋” ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ ์  ๋” ๋งŽ์€ ๊ณต๊ฐ„(ํ™”๋ฉด์— ๋งž๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ณต๊ฐ„)์„ ์ฐจ์ง€ํ•˜๋ฉฐ ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์œ ์ง€ํ•˜๊ธฐ ๋ถˆํŽธํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

switch ๋ฌธ๊ณผ switch ์‹์˜ ์ฐจ์ด์ 

Java 14์—์„œ๋Š” ์ƒˆ๋กญ๊ณ  ํ–ฅ์ƒ๋œ ์Šค์œ„์น˜๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ switch ๋ฌธ ์ด ์•„๋‹ˆ๋ผ switch ํ‘œํ˜„์‹ ์ž…๋‹ˆ๋‹ค .

์ฐจ์ด์ ์ด ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ฐจ์ด์ ์€ ๋ฌธ์€ ํŠน์ • ์ž‘์—… ์ง‘ํ•ฉ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น์ด์ง€๋งŒ ์‹์€ ์ผ๋ถ€ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ ์กฐ๊ฐ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์ด์ œ ์ „ํ™˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถฉ๋ถ„ํ•œ ์ด์•ผ๊ธฐ. ์ด์ œ ์ƒˆ ์Šค์œ„์น˜๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค .

var result = switch(month) {
     case DECEMBER, JANUARY, FEBRUARY -> 1;
     case MARCH, APRIL, MAY -> 2;
    case JUNE, JULY, AUGUST -> 3;
    case SEPTEMBER, OCTOBER, NOVEMBER -> 4;
    default -> 0;
};

๊ฐ€์žฅ ๋จผ์ € ๋ˆˆ์— ๋„๋Š” ๊ฒƒ์€ ์ฝ”๋“œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ฐ„๊ฒฐํ•œ๊ฐ€์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ™”๋ฉด์„ ์ฐจ์ง€ํ–ˆ๋˜ ์ฝ”๋“œ๊ฐ€ ์ด์ œ ๋ช‡ ์ค„์— ๊ฑธ์ณ ์žˆ์œผ๋ฉฐ ํ›จ์”ฌ ๋” ์ฝ๊ธฐ ์‰ฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค.

-> ์—ฐ์‚ฐ์ž

-> ์—ฐ์‚ฐ์ž(ํ™”์‚ดํ‘œ ์—ฐ์‚ฐ์ž) ๋„ ์ฃผ๋ชฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค . ๋žŒ๋‹ค ์‹์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด ์ด๋ฏธ ์ต์ˆ™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์ด์ œ ๋žŒ๋‹ค ๋ฌธ ์Šคํƒ€์ผ๋กœ ๋ฉ‹์ง„ ์Šค์œ„์น˜๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™”์‚ดํ‘œ ์—ฐ์‚ฐ์ž๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋‹ค์Œ case ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ณ (ํ˜„์žฌ case ๋ธ”๋ก์— break ๋˜๋Š” return ๋ฌธ์ด ์—†๋Š” ๊ฒฝ์šฐ ) ๋Œ€์‹  ํ™”์‚ดํ‘œ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์‹์˜ ๊ฐ’์„ ์ œ๊ณตํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ํ‘œํ˜„์‹์ด ์•„๋‹Œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์•„๋ฌด ๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

switch(condition) {
    case TRUE, FALSE -> System.out.println("True/false");

    default -> System.out.println("Another");
}

switch ์—๋Š” ๋” ์ด์ƒ break ๋ฌธ์ด ์—†์Šต๋‹ˆ๋‹ค. Java 13์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์œผ๋ฉฐ yield ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค .

์ˆ˜์œจ์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋””์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์Šค์œ„์น˜๊ฐ€ ํ•œ ์ค„๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ -> ์—ฐ์‚ฐ์ž ์ž์ฒด๊ฐ€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ์ค„์ด๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ํ™”์‚ดํ‘œ ์—ฐ์‚ฐ์ž๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•œ ์ค„์ด ์•„๋‹Œ ์—ฌ๋Ÿฌ ์ค„์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

return ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ์š” ? ๊ฒฐ๊ตญ Java์—์„œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์•„์•„, ์•„๋‹ˆ์˜ค, ๋ฆฌํ„ด์€ ์Šค์œ„์น˜์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด์ „์—๋Š” break ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ Java 13์—์„œ๋Š” ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ๊ทธ ์ž๋ฆฌ์— yield๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . ์Šค์œ„์น˜์—์„œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ƒˆ๋กœ์šด ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ์˜ return ๋ฌธ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค .

var result = switch(condition) {
//โ€ฆ
case "Hi" -> "greeting"
//โ€ฆ
};

์ด ์ฝ”๋“œ์—๋Š” ํ•œ ์ค„์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ -> ์—ฐ์‚ฐ์ž๋Š” "์ธ์‚ฌ๋ง"์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋“œ ๋ธ”๋ก์ด ์žˆ๋Š” ๊ฒฝ์šฐ:

var result = switch(condition) {
//โ€ฆ
case "Hi" -> {
// Your code
 Here you need to return "greeting"
	}
};

๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ํ‚ค์›Œ๋“œ๋Š” yield ์ž…๋‹ˆ๋‹ค .

var result = switch(condition) {
//โ€ฆ
case "Hi" -> {
// Your code
 yield "greeting";

	}
};

์ž๋ฐ” 13์—์„œ๋Š” case ๋ธ”๋ก์— ์ฝ”๋“œ๊ฐ€ ๋‘ ์ค„ ์ด์ƒ ์žˆ๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด yield๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ์—์„œ ์ƒˆ ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” Java 14 ์ด์ƒ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์„ธ์š”. ์ด์ „ ๋ฒ„์ „์—์„œ ์ด ์Šค์œ„์น˜๋Š” ๋ช…๋ น์ค„์— "--enable-preview" ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 14 ์ด์ „์—๋Š” ์–ธ์–ด์˜ ์™„์ „ํ•œ ๋ถ€๋ถ„์ด ์•„๋‹ˆ๋ผ ๊ธฐ์ˆ  ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์˜ ์ผ๋ถ€์˜€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์—ฌ๊ธฐ๊นŒ์ง€์ž…๋‹ˆ๋‹ค! ๋˜ ๋ด์š”!