์กฐ๊ฑด์ด ๋ง์ ์ฝ๋๋ฅผ ์์ฑํ ๋ 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 ์ด์ ์๋ ์ธ์ด์ ์์ ํ ๋ถ๋ถ์ด ์๋๋ผ ๊ธฐ์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์ ์ผ๋ถ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ง๊ธ์ ์ฌ๊ธฐ๊น์ง์ ๋๋ค! ๋ ๋ด์!