Java ์กฐ๊ฑด๋ฌธ ์ค switch๋ฌธ์ ํน์ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ง ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ๋์์ ์ํํ ์ ์๊ฒ ํด์ฃผ๋ ๊ตฌ๋ฌธ์ ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ์๋ฐ switch ๋ฌธ์ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
Java ํ๋ก๊ทธ๋๋ฐ์์ ์กฐ๊ฑด๋ฌธ์ ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ์ ์ดํ๋ ํต์ฌ์ ์ธ ์์์
๋๋ค.
์ง๋ ํฌ์คํ
์์๋ if๋ฌธ์ ๋ํด ์์๋ณด์๋๋ฐ์! ์์ง ๋ชป๋ณด์ ๋ถ๋ค์ ์๋ ๋งํฌ๋ฅผ ํ์ธํด ์ฃผ์ธ์๐
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. ํต์ฌ ๋ด์ฉ๐