** ๐ 1๋จ๊ณ ๋ณธ๋ฌธ: ์๋ฐ if
๋ฌธ์ ๊ธฐ๋ณธ ๊ฐ๋
**
1. if
๋ฌธ์ด๋?
if
๋ฌธ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋๊ฐ ์คํ๋ ์ง ๋ง์ง ๊ฒฐ์ ํฉ๋๋ค.- ์กฐ๊ฑด์ด ์ฐธ(
true
)์ด๋ฉด ์ฝ๋ ๋ธ๋ก์ ์คํํ๊ณ , - ์กฐ๊ฑด์ด ๊ฑฐ์ง(
false
)์ด๋ฉด ๋ค์ ์ฝ๋๋ก ๊ฑด๋๋๋๋ค. - ์กฐ๊ฑด์ ๋ฐ๋ผ ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ์ ์ดํ ์ ์์ต๋๋ค.
์์: if
๋ฌธ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
if (์กฐ๊ฑด์) {
// ์กฐ๊ฑด์์ด ์ฐธ์ผ ๋ ์คํํ ์ฝ๋
}
์กฐ๊ฑด์
: ์ฐธ(true
) ๋๋ ๊ฑฐ์ง(false
)์ด ๋์ค๋ ์- ์กฐ๊ฑด์์ด ์ฐธ์ผ ๋๋ง ์ค๊ดํธ
{}
์์ ์ฝ๋๊ฐ ์คํ๋ฉ๋๋ค.
์์: if
๋ฌธ ์ฌ์ฉ๋ฒ
int age = 20;
if (age >= 18) {
System.out.println("์ฑ์ธ์
๋๋ค.");
}
age
๊ฐ 18 ์ด์์ผ ๋๋ง"์ฑ์ธ์ ๋๋ค."
๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.age
๊ฐ 17 ์ดํ๋ผ๋ฉด ์๋ฌด๊ฒ๋ ์ถ๋ ฅ๋์ง ์์ต๋๋ค.
๐น ๋น์ : ์ ํธ๋ฑ
- ์ ํธ๋ฑ์ด ์ด๋ก๋ถ์ผ ๋๋ง ๊ธธ์ ๊ฑด๋๊ณ ,
- ๋นจ๊ฐ๋ถ์ด๋ฉด ๋ฉ์ถฐ ์๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
- ์กฐ๊ฑด(
age >= 18
)์ด ์ด๋ก๋ถ์ผ ๋๋ง ์ฝ๋๊ฐ ์คํ๋ฉ๋๋ค.
2. if-else
๋ฌธ์ด๋?
if
๋ฌธ์else
๋ฌธ์ ๋ถ์ด๋ฉด ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋ ์คํํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.- ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด
if
๋ธ๋ก์ด ์คํ๋๊ณ , - ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด๋ฉด
else
๋ธ๋ก์ด ์คํ๋ฉ๋๋ค.
์์: if-else
๋ฌธ ์ฌ์ฉ๋ฒ
int age = 16;
if (age >= 18) {
System.out.println("์ฑ์ธ์
๋๋ค.");
} else {
System.out.println("๋ฏธ์ฑ๋
์์
๋๋ค.");
}
age
๊ฐ 18 ์ด์์ด๋ฉด"์ฑ์ธ์ ๋๋ค."
์ถ๋ ฅage
๊ฐ 18 ๋ฏธ๋ง์ด๋ฉด"๋ฏธ์ฑ๋ ์์ ๋๋ค."
์ถ๋ ฅ
๐น ๋น์ : ์ ํธ๋ฑ + ํก๋จ๋ณด๋ ์งํด์ด
- ์ ํธ๋ฑ์ด ์ด๋ก๋ถ์ด๋ฉด ๊ธธ์ ๊ฑด๋๊ณ ,
- ์ ํธ๋ฑ์ด ๋นจ๊ฐ๋ถ์ด๋ฉด ํก๋จ๋ณด๋ ์งํด์ด๊ฐ ๋ฉ์ถ๋ผ๊ณ ๋งํจ
- ์กฐ๊ฑด(
age >= 18
)์ด ์ฐธ์ผ ๋๋if
์ฝ๋๊ฐ, - ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋๋
else
์ฝ๋๊ฐ ์คํ๋จ
3. if-else if-else
๋ฌธ์ด๋?
- ์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฑด์ ๊ฒ์ฌํ ๋ ์ฌ์ฉํฉ๋๋ค.
- ์กฐ๊ฑด์ ์์์๋ถํฐ ์ฐจ๋ก๋๋ก ๊ฒ์ฌํ๊ณ ,
- ์ฒ์์ผ๋ก ์ฐธ์ด ๋ ์กฐ๊ฑด์ ์ฝ๋ ๋ธ๋ก๋ง ์คํํฉ๋๋ค.
- ์กฐ๊ฑด์ด ๋ชจ๋ ๊ฑฐ์ง์ด๋ฉด
else
๋ธ๋ก์ด ์คํ๋ฉ๋๋ค.
์์: if-else if-else
๋ฌธ ์ฌ์ฉ๋ฒ
int score = 85;
if (score >= 90) {
System.out.println("A ํ์ ");
} else if (score >= 80) {
System.out.println("B ํ์ ");
} else if (score >= 70) {
System.out.println("C ํ์ ");
} else {
System.out.println("F ํ์ ");
}
score
๊ฐ 90 ์ด์์ด๋ฉด"A ํ์ "
์ถ๋ ฅscore
๊ฐ 80 ์ด์ 90 ๋ฏธ๋ง์ด๋ฉด"B ํ์ "
์ถ๋ ฅscore
๊ฐ 70 ์ด์ 80 ๋ฏธ๋ง์ด๋ฉด"C ํ์ "
์ถ๋ ฅ- *๊ทธ ์ธ(70 ๋ฏธ๋ง)**์ด๋ฉด
"F ํ์ "
์ถ๋ ฅ
๐น ๋น์ : ํ๊ต ์ฑ์ ํ
- ์ ์(
score
)์ ๋ฐ๋ผ A, B, C, F ํ์ ์ ๋ฐ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. - ์ฒซ ๋ฒ์งธ ์กฐ๊ฑด๋ถํฐ ์์๋๋ก ๊ฒ์ฌํ๊ณ , ์ฐธ์ด ๋ ์กฐ๊ฑด์ ๊ฒฐ๊ณผ๋ง ์ถ๋ ฅํฉ๋๋ค.
- ์กฐ๊ฑด์ด ๊ฒน์น ๊ฒฝ์ฐ, ๋จผ์ ๋ง๋ ์กฐ๊ฑด๋ง ์คํ๋๊ณ ๋๋จธ์ง๋ ๋ฌด์๋ฉ๋๋ค.
์ค์! ์กฐ๊ฑด ๊ฒ์ฌ ์์
if-else if-else
๋ฌธ์ ์์์ ์๋๋ก ์กฐ๊ฑด์ ์ฐจ๋ก๋๋ก ๊ฒ์ฌํฉ๋๋ค.- ์กฐ๊ฑด์ด ๊ฒน์น๋ ๊ฒฝ์ฐ ๋จผ์ ๋ง๋ ์กฐ๊ฑด๋ง ์คํ๋๊ณ ๋๋จธ์ง๋ ๊ฑด๋๋๋๋ค.
- ๋ฐ๋ผ์ ์์ฃผ ๋ฐ์ํ๋ ์กฐ๊ฑด์ด๋ ๋ฒ์๊ฐ ํฐ ์กฐ๊ฑด์ ๋จผ์ ๊ฒ์ฌํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ ๋ฆฌํฉ๋๋ค.
์กฐ๊ฑด์ด ๊ฒน์น ๋ ์ฃผ์์ฌํญ
int num = 10;
if (num > 5) {
System.out.println("5๋ณด๋ค ํฝ๋๋ค.");
} else if (num > 8) {
System.out.println("8๋ณด๋ค ํฝ๋๋ค.");
}
num
์ด10
์ผ ๋ โ5๋ณด๋ค ํฝ๋๋ค.โ๋ง ์ถ๋ ฅ๋๊ณ ,- *โ8๋ณด๋ค ํฝ๋๋ค.โ**๋ ์ถ๋ ฅ๋์ง ์์ต๋๋ค.
- *์ฒซ ๋ฒ์งธ ์กฐ๊ฑด(
num > 5
)์ด **์ฐธ์ด๋ผ์ ๋ ๋ฒ์งธ ์กฐ๊ฑด์ ๊ฑด๋๋๋๋ค.
4. ์ค์ฒฉ if
๋ฌธ์ด๋?
if
๋ฌธ ์์ ๋ ๋ค๋ฅธif
๋ฌธ์ด ๋ค์ด๊ฐ๋ ๊ตฌ์กฐ์ ๋๋ค.- ์กฐ๊ฑด์ด ์ฌ๋ฌ ๋จ๊ณ๋ก ๋๋์ด์ ธ ์์ ๋ ์ฌ์ฉํฉ๋๋ค.
- ํ์ง๋ง ์ค์ฒฉ์ด ๊น์ด์ง์๋ก ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ฏ๋ก
- *๋
ผ๋ฆฌ ์ฐ์ฐ์(
&&
,||
)๋ก **ํ ์ค๋ก ํํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์์: ์ค์ฒฉ if
๋ฌธ ์ฌ์ฉ๋ฒ
int age = 20;
boolean hasTicket = true;
if (age >= 18) {
if (hasTicket) {
System.out.println("์ํ๊ด ์
์ฅ ๊ฐ๋ฅํฉ๋๋ค.");
}
}
age
๊ฐ 18 ์ด์์ด๊ณ ,hasTicket
์ด true์ผ ๋๋ง ์ ์ฅ ๊ฐ๋ฅ
์ค์ฒฉ ๋์ ๋
ผ๋ฆฌ ์ฐ์ฐ์(&&
) ์ฌ์ฉํ๊ธฐ
if (age >= 18 && hasTicket) {
System.out.println("์ํ๊ด ์
์ฅ ๊ฐ๋ฅํฉ๋๋ค.");
}
&&
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ํ ์ค๋ก ํํ- ์ค์ฒฉ
if
๋ฌธ๋ณด๋ค ์ฝ๊ธฐ ์ฝ๊ณ ๊ฐ๊ฒฐํฉ๋๋ค.
5. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
if
๋ฌธ: ์กฐ๊ฑด์ด ์ฐธ์ผ ๋๋ง ์ฝ๋ ์คํif-else
๋ฌธ: ์ฐธ์ผ ๋๋if
, ๊ฑฐ์ง์ผ ๋๋else
์คํif-else if-else
๋ฌธ: ์ฌ๋ฌ ์กฐ๊ฑด์ ์์๋๋ก ๊ฒ์ฌ- ์ค์ฒฉ
if
๋ฌธ์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ฏ๋ก ๋ ผ๋ฆฌ ์ฐ์ฐ์(&&
,||
) ์ฌ์ฉ ๊ถ์ฅ - ์กฐ๊ฑด ๊ฒ์ฌ ์์: ์์ฃผ ๋ฐ์ํ๋ ์กฐ๊ฑด์ ๋จผ์ ๋ฐฐ์นํ๋ฉด ์ฑ๋ฅ ์ต์ ํ
โก 2๋จ๊ณ ๋ณธ๋ฌธ: if-else
๋ฌธ ์ฑ๋ฅ ์ต์ ํ
1. ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ if-else
์ฌ์ฉ๋ฒ
if-else
๋ฌธ์ ์์์ ์๋๋ก ์์๋๋ก ์กฐ๊ฑด์ ๊ฒ์ฌํฉ๋๋ค.- ๋ฐ๋ผ์ ์์ฃผ ๋ฐ์ํ๋ ์กฐ๊ฑด์ ๋จผ์ ๋ฐฐ์นํ๋ฉด ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
- ๊ฑฐ์ ๋ฐ์ํ์ง ์๋ ์กฐ๊ฑด์ ๋ค์ชฝ์ ๋ฐฐ์นํฉ๋๋ค.
์์: ์ต์ ํ ์
int num = 1;
if (num == 3) {
System.out.println("์ซ์๋ 3์
๋๋ค.");
} else if (num == 2) {
System.out.println("์ซ์๋ 2์
๋๋ค.");
} else if (num == 1) {
System.out.println("์ซ์๋ 1์
๋๋ค.");
}
num
์ด1
์ผ ๋, ๋ชจ๋ ์กฐ๊ฑด์ ๊ฒ์ฌํ ํ์์ผ ๋ง์ง๋ง์ ์ถ๋ ฅ๋ฉ๋๋ค.- ๋ถํ์ํ ์ฐ์ฐ์ด ๋ง์์ ๋นํจ์จ์ ์ ๋๋ค.
์์: ์ต์ ํ ํ
int num = 1;
if (num == 1) {
System.out.println("์ซ์๋ 1์
๋๋ค.");
} else if (num == 2) {
System.out.println("์ซ์๋ 2์
๋๋ค.");
} else if (num == 3) {
System.out.println("์ซ์๋ 3์
๋๋ค.");
}
- *์์ฃผ ๋ฐ์ํ๋ ์กฐ๊ฑด(
num == 1
)์ **๋งจ ์์ ๋ฐฐ์นํฉ๋๋ค. - ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ๋ค์ ์กฐ๊ฑด์ ๊ฒ์ฌํ์ง ์๊ณ ๋ฐ๋ก ์คํํฉ๋๋ค.
- ์ฐ์ฐ ํ์๋ฅผ ์ค์ฌ์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
๐น ๋น์ : ์ถ์ ๋ฌธ ๊ฒ์ฌ
- ์ฌ๋์ด ์์ฃผ ์ถ์ ํ๋ ๋ฌธ์ ๊ฐ์ฅ ๋จผ์ ๊ฒ์ฌํ๋ฉด ๋๊ธฐ ์๊ฐ์ด ์ค์ด๋ฆ
- ์์ฃผ ์ถ์ ํ์ง ์๋ ๋ฌธ์ ๋์ค์ ๊ฒ์ฌํด๋ ํจ์จ์ ์
2. if-else if-else
์์ switch
๋ฌธ์ผ๋ก ์ต์ ํ
- ์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฑด์ ๊ฒ์ฌํ ๋๋
switch
๋ฌธ์ด ์ฑ๋ฅ์ด ๋ ์ข์ ์ ์์ต๋๋ค. switch
๋ฌธ์ Jump Table์ด๋ผ๋ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ๋ถ๊ธฐํฉ๋๋ค.- ํนํ ์ ์, ๋ฌธ์์ด, enum ๊ฐ์ ๊ณ ์ ๋ ๊ฐ์ ๋น๊ตํ ๋ ์ ๋ฆฌํฉ๋๋ค.
if-else if-else
๋ฌธ ์์
String fruit = "์ฌ๊ณผ";
if (fruit.equals("์ฌ๊ณผ")) {
System.out.println("์ฌ๊ณผ์
๋๋ค.");
} else if (fruit.equals("๋ฐ๋๋")) {
System.out.println("๋ฐ๋๋์
๋๋ค.");
} else if (fruit.equals("๋ธ๊ธฐ")) {
System.out.println("๋ธ๊ธฐ์
๋๋ค.");
} else {
System.out.println("์ ์ ์๋ ๊ณผ์ผ์
๋๋ค.");
}
- ๋ฌธ์์ด์ ์ฌ๋ฌ ๋ฒ ๋น๊ตํด์ผ ํ๋ฏ๋ก ๋น๊ต ํ์๊ฐ ๋ง์
- ๋ชจ๋ ์กฐ๊ฑด์ ์์๋๋ก ๊ฒ์ฌํ๋ฏ๋ก ์ฑ๋ฅ์ด ๋จ์ด์ง
switch
๋ฌธ์ผ๋ก ์ต์ ํ
String fruit = "์ฌ๊ณผ";
switch (fruit) {
case "์ฌ๊ณผ" -> System.out.println("์ฌ๊ณผ์
๋๋ค.");
case "๋ฐ๋๋" -> System.out.println("๋ฐ๋๋์
๋๋ค.");
case "๋ธ๊ธฐ" -> System.out.println("๋ธ๊ธฐ์
๋๋ค.");
default -> System.out.println("์ ์ ์๋ ๊ณผ์ผ์
๋๋ค.");
}
switch
๋ฌธ์ Jump Table์ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ๋ถ๊ธฐ- ์กฐ๊ฑด์ ์์๋๋ก ๊ฒ์ฌํ์ง ์๊ณ , ํด๋น ์ผ์ด์ค๋ก ๋ฐ๋ก ์ด๋
- ์ฑ๋ฅ์ด ํฅ์๋๊ณ ๊ฐ๋ ์ฑ๋ ์ข์์ง
๐น ๋น์ : ์๋ฆฌ๋ฒ ์ดํฐ ์ธต ์ ํ
if-else
๋ 1์ธต๋ถํฐ ์์๋๋ก ๋ฒํผ์ ๋๋ฅด๋ฉฐ ์ธต์ ํ์ธswitch
๋ ๋ฐ๋ก ํด๋น ์ธต ๋ฒํผ์ผ๋ก ๋น ๋ฅด๊ฒ ์ด๋
3. if
๋ฌธ์ ๋์ฒดํ ์ ์๋ ๋ฐฉ๋ฒ
1) ์ผํญ ์ฐ์ฐ์ (? :) ์ฌ์ฉํ๊ธฐ
if-else
๋ฌธ์ด ํ ์ค๋ก ๊ฐ๋จํ๊ฒ ํํ๋ ๋ ์ฌ์ฉํฉ๋๋ค.- ์กฐ๊ฑด ? ์ฐธ์ผ ๋ ๊ฐ : ๊ฑฐ์ง์ผ ๋ ๊ฐ ํํ๋ก ์ฌ์ฉํฉ๋๋ค.
int age = 20;
String result = (age >= 18) ? "์ฑ์ธ" : "๋ฏธ์ฑ๋
์";
System.out.println(result); // ์ถ๋ ฅ: ์ฑ์ธ
- *์กฐ๊ฑด(
age >= 18
)์ด **์ฐธ์ด๋ฉด โ์ฑ์ธโ, ๊ฑฐ์ง์ด๋ฉด โ๋ฏธ์ฑ๋ ์โ๊ฐ ์ ์ฅ๋ฉ๋๋ค. - ์ฝ๋๊ฐ ์งง๊ณ ๊ฐ๊ฒฐํด์ ธ์ ๊ฐ๋ ์ฑ์ด ์ข์์ง๋๋ค.
๐น ๋น์ : ์คํฐ์ปค ๋ถ์ด๊ธฐ
- ๋์ด๊ฐ
18
์ด์์ด๋ฉด โ์ฑ์ธโ ์คํฐ์ปค๋ฅผ, - ๋์ด๊ฐ
18
๋ฏธ๋ง์ด๋ฉด โ๋ฏธ์ฑ๋ ์โ ์คํฐ์ปค๋ฅผ ๋ถ์
2) ๋คํ์ฑ(Polymorphism)์ผ๋ก ๋์ฒดํ๊ธฐ
- ์กฐ๊ฑด๋ฌธ์ด ๋ง๊ฑฐ๋ ํ์ฅ ๊ฐ๋ฅ์ฑ์ด ํฐ ๊ฒฝ์ฐ์๋
- *๊ฐ์ฒด ์งํฅ ์ค๊ณ(OOP)์์ **๋คํ์ฑ(Polymorphism)์ ์ฌ์ฉํฉ๋๋ค.
if
๋ฌธ ์์ด ๊ฐ ํด๋์ค์ ๊ฐ๋ณ ํ๋์ ์ ์ํ๋ฉด,- ์ ์ง๋ณด์์ฑ์ด ๋์์ง๊ณ ํ์ฅํ๊ธฐ ์ฌ์์ง๋๋ค.
์์: ๋คํ์ฑ์ผ๋ก if
๋ฌธ ์ ๊ฑฐ
abstract class Animal {
abstract void makeSound();
}
class Dog extends Animal {
void makeSound() { System.out.println("๋ฉ๋ฉ"); }
}
class Cat extends Animal {
void makeSound() { System.out.println("์ผ์น"); }
}
Animal pet = new Dog();
pet.makeSound(); // ์ถ๋ ฅ: ๋ฉ๋ฉ
if (pet == ๊ฐ)
๊ฐ์ ์กฐ๊ฑด๋ฌธ ์์ด,- Dog์ Cat ํด๋์ค๊ฐ ๊ฐ์ ์ธ์์๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค.
- ์๋ก์ด ๋๋ฌผ์ด ์ถ๊ฐ๋์ด๋
if
๋ฌธ์ ์์ ํ์ง ์๊ณ - ํด๋์ค๋ง ์ถ๊ฐํ๋ฉด ๋๋ฏ๋ก ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋์์ง๋๋ค.
๐น ๋น์ : ์ ๊ธฐ ์ฐ์ฃผํ๊ธฐ
Animal
์ ์ ๊ธฐ์ด๊ณ ,Dog
์Cat
์ ๊ธฐํ์ ํผ์๋ ธ- *๊ฐ ์ ๊ธฐ(ํด๋์ค)๊ฐ **๊ฐ์์ ์๋ฆฌ(๋ฉ์๋)๋ฅผ ๋
- *์งํ์(
if
๋ฌธ)๊ฐ **์ผ์ผ์ด ์ง์ํ์ง ์์๋ - ๊ฐ ์ ๊ธฐ๊ฐ ์์์ ์๋ฆฌ๋ฅผ ๋
4. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- ์์ฃผ ๋ฐ์ํ๋ ์กฐ๊ฑด์ ๋จผ์ ๋ฐฐ์นํ์ฌ
if-else
์ต์ ํ - ์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฑด๋ฌธ์
switch
๋ฌธ์ผ๋ก ๋ฐ๊ฟ์ Jump Table ์ฌ์ฉ - ๊ฐ๋จํ ์กฐ๊ฑด๋ฌธ์ ์ผํญ ์ฐ์ฐ์(
? :
)๋ก ํ ์ค๋ก ํํ - ๋ณต์กํ ์กฐ๊ฑด๋ฌธ์ ๋คํ์ฑ(Polymorphism)์ผ๋ก ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ ํฅ์
if-else
๋ฌธ๋ณด๋คswitch
๋ฌธ์ด ์ฑ๋ฅ์ด ์ข์ ๊ฒฝ์ฐ๋ ์์
๐ 3๋จ๊ณ ๋ณธ๋ฌธ: ์ค์ฒฉ if
๋ฌธ ์ค์ด๊ธฐ
1. ์ค์ฒฉ if
๋ฌธ์ด๋?
if
๋ฌธ ์์ ๋ ๋ค๋ฅธif
๋ฌธ์ด ๋ค์ด๊ฐ๋ ๊ตฌ์กฐ์ ๋๋ค.- ์ฌ๋ฌ ๋จ๊ณ์ ์กฐ๊ฑด์ ๊ฒ์ฌํ ๋ ์ฌ์ฉํฉ๋๋ค.
- ํ์ง๋ง ์ค์ฒฉ์ด ๊น์ด์ง์๋ก ์ฝ๋๊ฐ ๋ณต์กํ๊ณ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋๋ค.
์์: ์ค์ฒฉ if
๋ฌธ ์ฌ์ฉ๋ฒ
int age = 20;
boolean hasTicket = true;
if (age >= 18) {
if (hasTicket) {
System.out.println("์ํ๊ด ์
์ฅ ๊ฐ๋ฅํฉ๋๋ค.");
}
}
age
๊ฐ 18 ์ด์์ด๊ณ ,hasTicket
์ด true์ผ ๋๋ง ์ ์ฅ ๊ฐ๋ฅ- ์กฐ๊ฑด์ด ๋ ๋จ๊ณ๋ก ๋๋์ด์ ธ ์์ต๋๋ค.
๐น ๋น์ : ์ด์ค ์ ๊ธ ์ฅ์น
- ๋ฌธ์ด ๋ ๊ฐ๋ก ๋์ด ์์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ(๋์ด ํ์ธ)์ ์ด๊ณ ,
- *๋ ๋ฒ์งธ ๋ฌธ(ํ ํ์ธ)๋ ์ด์ด์ผ **์ ์ฅ ๊ฐ๋ฅ
- ๋ฌธ์ด ์ฌ๋ฌ ๊ฐ๋ผ์ ๋ณต์กํ๊ณ ํท๊ฐ๋ฆผ
2. ์ค์ฒฉ if
๋ฌธ์ ์ค์ด๋ ๋ฐฉ๋ฒ
- *๋
ผ๋ฆฌ ์ฐ์ฐ์(
&&
,||
)๋ฅผ ์ฌ์ฉํ๋ฉด **ํ ์ค๋ก ํํํ ์ ์์ต๋๋ค. - ์ค์ฒฉ์ ์ค์ฌ์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ์ฑ๋ฅ๋ ์ต์ ํ๋ฉ๋๋ค.
๋ฐฉ๋ฒ 1: ๋
ผ๋ฆฌ ์ฐ์ฐ์(&&
) ์ฌ์ฉํ๊ธฐ
- ๋ชจ๋ ์กฐ๊ฑด์ด ์ฐธ์ผ ๋๋ง ์คํํ ๋๋
&&
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.์กฐ๊ฑด1 && ์กฐ๊ฑด2
: ๋ ๋ค ์ฐธ์ผ ๋๋ง ์ฐธ
-
์์ ์ค์ฒฉ
if
๋ฌธ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ก ๋ณ๊ฒฝํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค:if (age >= 18 && hasTicket) { System.out.println("์ํ๊ด ์ ์ฅ ๊ฐ๋ฅํฉ๋๋ค."); }
- ํ ์ค๋ก ํํํ์ฌ ๊ฐ๋ ์ฑ์ด ์ข์์ง๊ณ ,
- ์ค์ฒฉ์ ์์ ์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
๐น ๋น์ : ํ ๋ฒ์ ๋ ๊ฐ์ง ํ์ธ
- ํ ๊ฒ์ฌ๊ธฐ๊ฐ ๋์ด์ ํ๋ฅผ ํ ๋ฒ์ ๊ฒ์ฌ
- ๋ ๊ฐ์ ๋ฌธ์ ์ด ํ์ ์์ด ํ ๋ฒ์ ์ ์ฅ
๋ฐฉ๋ฒ 2: return
์ด๋ break
์ฌ์ฉํ๊ธฐ
- ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋ ๋ฐ๋ก ๋ฆฌํด(return)ํ๊ฑฐ๋ ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋์ต๋๋ค.
- ๋ถํ์ํ ์กฐ๊ฑด ๊ฒ์ฌ๋ฅผ ๊ฑด๋๋ฐ์ด์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
- ์ฃผ๋ก ๋ฉ์๋์ ์๋ถ๋ถ์์ ์กฐ๊ฑด์ ๊ฒ์ฌํ๊ณ ๋ฆฌํดํฉ๋๋ค.
์์: return
์ผ๋ก ์ค์ฒฉ ์ค์ด๊ธฐ
void checkAge(int age) {
if (age < 18) {
System.out.println("๋ฏธ์ฑ๋
์๋ ์
์ฅํ ์ ์์ต๋๋ค.");
return;
}
System.out.println("์ฑ์ธ์
๋๋ค. ์
์ฅ ๊ฐ๋ฅํฉ๋๋ค.");
}
age
๊ฐ 18 ๋ฏธ๋ง์ด๋ฉด ๋ฐ๋ก ๋ฆฌํดํ์ฌ ๋ค์ ์ฝ๋๋ฅผ ๊ฑด๋๋๋๋ค.- ์ค์ฒฉ ์์ด
if
๋ฌธ์ ๋ ๋ฒ ์ฌ์ฉํ์ฌ ๊ฐ๋ ์ฑ์ด ์ข์์ง๋๋ค.
๐น ๋น์ : ์ ๊ตฌ์์ ๋๋ ค๋ณด๋ด๊ธฐ
- ๋ฏธ์ฑ๋ ์๋ ์ ๊ตฌ์์ ๋ฐ๋ก ๋๋ ค๋ณด๋ด๊ธฐ
- ์ฑ์ธ๋ง ๋ค์ ๋จ๊ณ(์ ์ฅ ๊ฒ์ฌ)๋ก ์ด๋
์์: break
๋ก ์ค์ฒฉ ์ค์ด๊ธฐ (๋ฐ๋ณต๋ฌธ์์ ์ฌ์ฉ)
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // i๊ฐ 5์ผ ๋ ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋์ด
}
System.out.println(i);
}
i
๊ฐ5
์ผ ๋break
*๋ก **๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋์ต๋๋ค.- ์ค์ฒฉ ์์ด ํ์ํ ์กฐ๊ฑด๋ง ๊ฒ์ฌํฉ๋๋ค.
break
๋ ๋ฐ๋ณต๋ฌธ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐น ๋น์ : ์ ํด์ง ๋ฒํธ์์ ๋ฉ์ถ๊ธฐ
- 5๋ฒ ์๋์ด ์ค๋ฉด ๊ฐ๊ฒ ๋ฌธ์ ๋ซ๊ณ ์์ ์ข ๋ฃ
- ๋ค์ ์๋์ ๊ฒ์ฌํ์ง ์๊ณ ๊ฑด๋๋
3. if-else
๋ฌธ์ ์ผํญ ์ฐ์ฐ์(? :)๋ก ๊ฐ๋จํ๊ฒ ํํํ๊ธฐ
if-else
๋ฌธ์ด ํ ์ค๋ก ํํ ๊ฐ๋ฅํ ๋๋- *์ผํญ ์ฐ์ฐ์(
? :
)๋ฅผ ์ฌ์ฉํ๋ฉด **๊ฐ๋ ์ฑ์ด ์ข์์ง๋๋ค. - ํ์:
์กฐ๊ฑด ? ์ฐธ์ผ ๋ ๊ฐ : ๊ฑฐ์ง์ผ ๋ ๊ฐ
์์: ์ผํญ ์ฐ์ฐ์ ์ฌ์ฉํ๊ธฐ
int age = 20;
String result = (age >= 18) ? "์ฑ์ธ" : "๋ฏธ์ฑ๋
์";
System.out.println(result); // ์ถ๋ ฅ: ์ฑ์ธ
age
๊ฐ18 ์ด์
์ด๋ฉด"์ฑ์ธ"
์ ์ ์ฅํ๊ณ ,- ๊ทธ๋ ์ง ์์ผ๋ฉด
"๋ฏธ์ฑ๋ ์"
๋ฅผ ์ ์ฅํฉ๋๋ค. - ํ ์ค๋ก ํํํ์ฌ ์ฝ๋๊ฐ ์งง๊ณ ๊ฐ๊ฒฐํฉ๋๋ค.
๐น ๋น์ : ๋นจ๊ฐ ์คํฐ์ปค, ํ๋ ์คํฐ์ปค
- ๋์ด๊ฐ
18
์ด์์ด๋ฉด ๋นจ๊ฐ ์คํฐ์ปค(์ฑ์ธ), - ๋์ด๊ฐ
18
๋ฏธ๋ง์ด๋ฉด ํ๋ ์คํฐ์ปค(๋ฏธ์ฑ๋ ์)
4. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- ์ค์ฒฉ
if
๋ฌธ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์(&&
,||
)๋ก ํ ์ค๋ก ํํ - ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋
return
์ด๋break
*๋ก **๋ฐ๋ก ๊ฑด๋๋ฐ๊ธฐ - *์ผํญ ์ฐ์ฐ์(
? :
)๋ฅผ ์ฌ์ฉํ๋ฉด **๊ฐ๋จํif-else
๋ฌธ์ ํ ์ค๋ก ํํ - ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ์ฑ๋ฅ๋ ์ต์ ํ๋จ
- ์ค์ฒฉ์ด ๊น์ด์ง์๋ก ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ณ ์ฑ๋ฅ์ด ์ ํ๋๋ฏ๋ก ์ค์ด๋ ๊ฒ์ด ์ข์
๐ ํ๋์ ๋ณด๋ ์์ฝ
- ๋
ผ๋ฆฌ ์ฐ์ฐ์(
&&
,||
): ์ค์ฒฉ ์์ด ํ ์ค๋ก ํํ return
๊ณผbreak
: ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋ ๋ฐ๋ก ์ข ๋ฃ- ์ผํญ ์ฐ์ฐ์(? :): ๊ฐ๋จํ
if-else
๋ฌธ์ ํ ์ค๋ก - ์ค์ฒฉ์ ์ค์ด๋ฉด ๊ฐ๋ ์ฑ์ด ์ข์์ง๊ณ ์ฑ๋ฅ๋ ํฅ์๋จ
๐ 4๋จ๊ณ ๋ณธ๋ฌธ: switch
๋ฌธ๊ณผ if-else if-else
๋น๊ต
1. switch
๋ฌธ์ด๋?
- ํ๋์ ๋ณ์์ ๋ํด ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ๋น๊ตํ ๋ ์ฌ์ฉํฉ๋๋ค.
if-else if-else
๋ฌธ๊ณผ ๋น์ทํ์ง๋ง,- ์กฐ๊ฑด์ด ๊ณ ์ ๋ ๊ฐ์ผ ๋ ๋ ํจ์จ์ ์ ๋๋ค.
- ์ ์, ๋ฌธ์์ด, enum ๊ฐ์ ์ ํด์ง ๊ฐ์ ๋น๊ตํ ๋ ์ ๋ฆฌํฉ๋๋ค.
switch
๋ฌธ ๊ธฐ๋ณธ ๊ตฌ์กฐ
switch (๋ณ์) {
case ๊ฐ1 -> ์คํ ์ฝ๋;
case ๊ฐ2 -> ์คํ ์ฝ๋;
default -> ๊ธฐ๋ณธ ์คํ ์ฝ๋;
}
๋ณ์
: ๋น๊ตํ ๋์case
: ๋น๊ตํ ๊ฐ (๊ณ ์ ๋ ๊ฐ)default
: ๋ชจ๋ case์ ํด๋นํ์ง ์์ ๋ ์คํ
์์: switch
๋ฌธ ์ฌ์ฉ๋ฒ
int day = 3;
switch (day) {
case 1 -> System.out.println("์์์ผ");
case 2 -> System.out.println("ํ์์ผ");
case 3 -> System.out.println("์์์ผ");
case 4 -> System.out.println("๋ชฉ์์ผ");
case 5 -> System.out.println("๊ธ์์ผ");
default -> System.out.println("์ฃผ๋ง");
}
day
๊ฐ3
์ด๋ฉด"์์์ผ"
์ถ๋ ฅday
๊ฐ1 ~ 5
๊ฐ ์๋๋ฉด"์ฃผ๋ง"
์ถ๋ ฅ
๐น ๋น์ : ๋ค์ค ์ ํ ๋ฌธ์
day
๋ผ๋ ๋ฌธ์ ์ ๋ํด 1, 2, 3, 4, 5 ์ค ํ๋์ ์ ๋ต์ ๊ณ ๋ฅด๋ ๊ฒ๊ณผ ๋น์ท- ์ ๋ต์ด ์ ํด์ ธ ์์ด์ ๋น ๋ฅด๊ฒ ์ ํํ ์ ์์
2. if-else if-else
๋ฌธ๊ณผ ๋น๊ต
if-else if-else
๋ฌธ์ ์กฐ๊ฑด์ ์์๋๋ก ๊ฒ์ฌํฉ๋๋ค.switch
๋ฌธ์ Jump Table์ ์ฌ์ฉํ์ฌ ํด๋น ์ผ์ด์ค๋ก ๋ฐ๋ก ์ด๋ํฉ๋๋ค.- ๊ณ ์ ๋ ๊ฐ์ ๋น๊ตํ ๋๋
switch
๋ฌธ์ด ๋ ๋น ๋ฅด๊ณ ๊ฐ๋ ์ฑ๋ ์ข์ต๋๋ค.
if-else if-else
๋ฌธ ์์
int day = 3;
if (day == 1) {
System.out.println("์์์ผ");
} else if (day == 2) {
System.out.println("ํ์์ผ");
} else if (day == 3) {
System.out.println("์์์ผ");
} else if (day == 4) {
System.out.println("๋ชฉ์์ผ");
} else if (day == 5) {
System.out.println("๊ธ์์ผ");
} else {
System.out.println("์ฃผ๋ง");
}
day
๊ฐ3
์ด๋ฉด,1
,2
์กฐ๊ฑด์ ์์๋๋ก ๊ฒ์ฌํ ํ์์ผ"์์์ผ"
์ ์ถ๋ ฅํฉ๋๋ค.- ์กฐ๊ฑด์ ์์ฐจ์ ์ผ๋ก ๊ฒ์ฌํ๊ธฐ ๋๋ฌธ์ ๋น๊ต ํ์๊ฐ ๋ง์
๐น ๋น์ : ์ค ์์ ๊ฒ์ฌ๋ฐ๊ธฐ
- ์ฌ๋(
day
)์ด 1๋ฒ ์ฐฝ๊ตฌ๋ถํฐ ์ฐจ๋ก๋๋ก ๊ฒ์ฌ - *์ ๋ต(3๋ฒ)์ ๋ง๋๊ธฐ ์ ๊น์ง **๋ชจ๋ ์ฐฝ๊ตฌ๋ฅผ ๊ฑฐ์นจ
- ์ค ์์ ๊ธฐ๋ค๋ฆฌ๋๋ผ ๋นํจ์จ์
switch
๋ฌธ์ผ๋ก ์ต์ ํ
int day = 3;
switch (day) {
case 1 -> System.out.println("์์์ผ");
case 2 -> System.out.println("ํ์์ผ");
case 3 -> System.out.println("์์์ผ");
case 4 -> System.out.println("๋ชฉ์์ผ");
case 5 -> System.out.println("๊ธ์์ผ");
default -> System.out.println("์ฃผ๋ง");
}
switch
๋ฌธ์ Jump Table์ ์ฌ์ฉํฉ๋๋ค.day
๊ฐ3
์ด๋ฉด ๋ฐ๋ก 3๋ฒ ์ผ์ด์ค๋ก ๋น ๋ฅด๊ฒ ์ด๋ํฉ๋๋ค.- ์กฐ๊ฑด์ ์์ฐจ์ ์ผ๋ก ๊ฒ์ฌํ์ง ์์ผ๋ฏ๋ก ์ฑ๋ฅ์ด ๋ ์ข์ต๋๋ค.
๐น ๋น์ : ์๋ฆฌ๋ฒ ์ดํฐ ๋ฒํผ
switch
๋ ์๋ฆฌ๋ฒ ์ดํฐ ๋ฒํผ์ฒ๋ผ- ๋๋ฆฐ ์ธต(3์ธต)์ผ๋ก ๋ฐ๋ก ์ด๋
- ์ค๊ฐ ์ธต์ ๊ฑฐ์น์ง ์์
3. switch
๋ฌธ์ ์ฅ์
- Jump Table ๋๋ถ์ ๋น ๋ฅด๊ฒ ๋ถ๊ธฐํฉ๋๋ค.
- ์ ์, ๋ฌธ์์ด, enum์ฒ๋ผ ๊ณ ์ ๋ ๊ฐ์ ๋น๊ตํ ๋ ํจ์จ์ ์ ๋๋ค.
- ๊ฐ๋ ์ฑ์ด ์ข์์ง๊ณ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋๋ค.
4. switch
๋ฌธ์ ๋จ์
- ์กฐ๊ฑด์ด ๋ณต์กํ๊ฑฐ๋ ๋ฒ์๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์:
day > 0 && day < 6
๊ฐ์ ๋ฒ์ ๋น๊ต๋if
๋ฌธ๋ง ๊ฐ๋ฅ -
๋ชจ๋ case๊ฐ ๋ ๋ฆฝ์ ์ด๋ฏ๋ก ์ค๋ณต ์ฝ๋๋ฅผ ์ค์ด๊ธฐ ์ด๋ ต์ต๋๋ค.
switch (day) { case 1, 2, 3, 4, 5 -> System.out.println("ํ์ผ"); default -> System.out.println("์ฃผ๋ง"); }
- JDK 12 ์ด์์์๋ ์ฌ๋ฌ case๋ฅผ ์ผํ(,)๋ก ๋ฌถ์ ์ ์์ต๋๋ค.
5. ์ธ์ switch
๋ฌธ์ ์ฌ์ฉํด์ผ ํ ๊น?
- ์ ํด์ง ๊ฐ์ ๋น๊ตํ ๋ ์ฌ์ฉ (์:
int
,String
,enum
) - ๊ฐ์ด ๊ณ ์ ์ ์ด๊ณ ์กฐ๊ฑด์ด ๋ง์ ๋ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ด ์ข์์ง๋๋ค.
- ๋ฒ์ ๊ฒ์ฌ๊ฐ ํ์ํ๊ฑฐ๋ ๋ณต์กํ ์กฐ๊ฑด์ด ์์ ๋๋
if-else
๋ฌธ ์ฌ์ฉ
์์: switch
๋ฌธ์ด ์ ํฉํ ๊ฒฝ์ฐ
enum Level { BEGINNER, INTERMEDIATE, ADVANCED }
Level myLevel = Level.INTERMEDIATE;
switch (myLevel) {
case BEGINNER -> System.out.println("์ด๋ณด์");
case INTERMEDIATE -> System.out.println("์ค๊ธ์");
case ADVANCED -> System.out.println("๊ณ ๊ธ์");
}
enum
ํ์ ์ ๊ณ ์ ๋ ๊ฐ์ด๋ฏ๋กswitch
๋ฌธ์ด ์ ํฉํฉ๋๋ค.if-else
๋ฌธ๋ณด๋ค ๊ฐ๋ ์ฑ์ด ์ข๊ณ , ์ฑ๋ฅ๋ ๋น ๋ฆ ๋๋ค.
6. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
switch
๋ฌธ์ Jump Table์ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ๋ถ๊ธฐ- ๊ณ ์ ๋ ๊ฐ(
int
,String
,enum
)์ ๋น๊ตํ ๋ ์ฑ๋ฅ์ด ์ข์ if-else if-else
๋ ์กฐ๊ฑด์ ์์๋๋ก ๊ฒ์ฌ โ ๋น๊ต ํ์๊ฐ ๋ง์- ๋ฒ์ ๋น๊ต ๋๋ ๋ณต์กํ ์กฐ๊ฑด์
if-else
๋ฌธ ์ฌ์ฉ - JDK 12 ์ด์์์๋ ์ฌ๋ฌ case๋ฅผ ์ผํ(,)๋ก ๋ฌถ์ ์ ์์
- ์กฐ๊ฑด์ด ๋ง๊ณ ๊ณ ์ ๋ ๊ฐ์ผ ๋๋
switch
๋ฌธ์ด ๋ ๋น ๋ฅด๊ณ ๊ฐ๋ ์ฑ๋ ์ข์
๐งฉ 5๋จ๊ณ ๋ณธ๋ฌธ: ๋คํ์ฑ์ผ๋ก if
๋ฌธ ๋์ฒดํ๊ธฐ
1. ๋คํ์ฑ(Polymorphism)์ด๋?
- *๋คํ์ฑ(Polymorphism)์ **ํ๋์ ๋ฉ์๋๋ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๊ฐ์ง ํํ๋ฅผ ๊ฐ์ง ์ ์๋ ์ฑ์ง์ ๋๋ค.
- ๊ฐ์ ๋ฉ์๋ ์ด๋ฆ์ด๋ผ๋ ๋ค๋ฅธ ํด๋์ค์์ ๋ค๋ฅด๊ฒ ๋์ํฉ๋๋ค.
if
๋ฌธ์ด๋switch
๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ ,- ๊ฐ ํด๋์ค์์ ๊ฐ๋ณ ํ๋์ ์ ์ํ์ฌ ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๋คํ์ฑ์ ํน์ง ์์ฝ
- *์์(Inheritance)๊ณผ **์ค๋ฒ๋ผ์ด๋ฉ(Overriding)์ ์ฌ์ฉํฉ๋๋ค.
- ๋ถ๋ชจ ํด๋์ค ํ์ ์ ๋ณ์๋ก ์์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
- ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ์์ ํด๋์ค์ ์ค๋ฒ๋ผ์ด๋ฉ๋ ๋ฉ์๋๊ฐ ์คํ๋ฉ๋๋ค.
- ์กฐ๊ฑด๋ฌธ ์์ด ๊ฐ ํด๋์ค์์ ํ๋์ ์ ์ํ๋ฏ๋ก ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋์์ง๋๋ค.
2. ๋คํ์ฑ์ ์ฌ์ฉํ ์์: ๋๋ฌผ ์ธ์์๋ฆฌ
if
๋ฌธ์ ์ฌ์ฉํ๋ฉด ์กฐ๊ฑด์ด ๋ง์์ง์๋ก ์ฝ๋๊ฐ ๋ณต์กํด์ง๋๋ค.- ์๋ฅผ ๋ค์ด, ๊ฐ์ ๊ณ ์์ด, ์๊ฐ ์ธ์์๋ฆฌ๋ฅผ ๋ธ๋ค๊ณ ํ ๋:
if
๋ฌธ์ ์ฌ์ฉํ ์์ (์ ์ง๋ณด์์ฑ ๋ฎ์)
String animal = "๊ฐ";
if (animal.equals("๊ฐ")) {
System.out.println("๋ฉ๋ฉ");
} else if (animal.equals("๊ณ ์์ด")) {
System.out.println("์ผ์น");
} else if (animal.equals("์")) {
System.out.println("์๋งค");
} else {
System.out.println("์ ์ ์๋ ๋๋ฌผ");
}
- ์๋ก์ด ๋๋ฌผ์ด ์ถ๊ฐ๋๋ฉด
if
๋ฌธ์ ์์ ํด์ผ ํจ - ์กฐ๊ฑด์ด ๋ง์์ง์๋ก ์ฝ๋๊ฐ ๋ณต์กํด์ง
- ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋จ์ด์ง๋๋ค.
๋คํ์ฑ์ ์ฌ์ฉํ ์์ (์ ์ง๋ณด์์ฑ ๋์)
- *๋ถ๋ชจ ํด๋์ค(
Animal
)์ **์์ ํด๋์ค(Dog
,Cat
,Cow
)๋ฅผ ๋ง๋ญ๋๋ค. - ๊ฐ ์์ ํด๋์ค์์ ์ธ์์๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค.
- ์๋ก์ด ๋๋ฌผ์ด ์ถ๊ฐ๋๋๋ผ๋
if
๋ฌธ์ ์์ ํ์ง ์๊ณ - ํด๋์ค๋ง ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
// ๋ถ๋ชจ ํด๋์ค
abstract class Animal {
abstract void makeSound();
}
// ์์ ํด๋์ค - ๊ฐ
class Dog extends Animal {
void makeSound() { System.out.println("๋ฉ๋ฉ"); }
}
// ์์ ํด๋์ค - ๊ณ ์์ด
class Cat extends Animal {
void makeSound() { System.out.println("์ผ์น"); }
}
// ์์ ํด๋์ค - ์
class Cow extends Animal {
void makeSound() { System.out.println("์๋งค"); }
}
// ๋ฉ์ธ ๋ฉ์๋
public class Main {
public static void main(String[] args) {
Animal myPet = new Dog();
myPet.makeSound(); // ์ถ๋ ฅ: ๋ฉ๋ฉ
myPet = new Cat();
myPet.makeSound(); // ์ถ๋ ฅ: ์ผ์น
myPet = new Cow();
myPet.makeSound(); // ์ถ๋ ฅ: ์๋งค
}
}
์ค๋ช
- *๋ถ๋ชจ ํด๋์ค(
Animal
)์๋ **์ถ์ ๋ฉ์๋(makeSound()
)๋ง ์์ต๋๋ค. - *์์ ํด๋์ค(
Dog
,Cat
,Cow
)๋ **๊ฐ๊ฐ์ ์ธ์์๋ฆฌ๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํฉ๋๋ค. if
๋ฌธ ์์ด ๊ฐ ํด๋์ค๊ฐ ์์์ ํ๋ํฉ๋๋ค.- ์๋ก์ด ๋๋ฌผ์ด ์๊ฒจ๋ ํด๋์ค๋ง ์ถ๊ฐํ๋ฉด ๋๋ฏ๋ก ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋์ต๋๋ค.
๐น ๋น์ : ์งํ์์ ์ ๊ธฐ
- *์งํ์(
Animal
)๋ **์ ๊ธฐ๋ง๋ค ์ด๋ค ์๋ฆฌ๊ฐ ๋๋์ง ๋ชจ๋ฆ - *๊ฐ ์
๊ธฐ(
Dog
,Cat
,Cow
)๊ฐ **๊ฐ์์ ์๋ฆฌ๋ฅผ ๋ - ์๋ก์ด ์ ๊ธฐ๊ฐ ์ถ๊ฐ๋๋๋ผ๋ ์งํ์๋ ์ ๊ฒฝ ์ฐ์ง ์์
3. ๋คํ์ฑ์ ์ฌ์ฉํ ์ด์
- ์กฐ๊ฑด๋ฌธ ์์ด ๊ฐ ํด๋์ค๊ฐ ํ๋์ ์ ์ํ๋ฏ๋ก ๊ฐ๋ ์ฑ์ด ์ข์์ง๋๋ค.
- ์๋ก์ด ํด๋์ค๊ฐ ์ถ๊ฐ๋๋๋ผ๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ ํ์๊ฐ ์์ต๋๋ค.
- ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋์์ง๋๋ค.
if-else
๋ฌธ์ด ๋ง์์ง ๋๋ ๋คํ์ฑ์ผ๋ก ๋ฐ๊พธ๋ฉด ์ฝ๋๊ฐ ๊น๋ํด์ง๋๋ค.
4. ๋คํ์ฑ์ ๋ค๋ฅธ ํ์ฉ ์: ๊ณ์ฐ๊ธฐ
- ์ฐ์ฐ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ณ์ฐ์ ํด์ผ ํ ๋๋ ๋คํ์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด, ๋ง์ , ๋บ์ , ๊ณฑ์ , ๋๋์ ์ ํ๋ ๊ณ์ฐ๊ธฐ:
if-else
๋ฌธ์ ์ฌ์ฉํ ์์ (์ ์ง๋ณด์์ฑ ๋ฎ์)
String operator = "+";
int a = 10;
int b = 5;
int result;
if (operator.equals("+")) {
result = a + b;
} else if (operator.equals("-")) {
result = a - b;
} else if (operator.equals("*")) {
result = a * b;
} else if (operator.equals("/")) {
result = a / b;
} else {
throw new IllegalArgumentException("์๋ชป๋ ์ฐ์ฐ์");
}
System.out.println("๊ฒฐ๊ณผ: " + result);
- ์ฐ์ฐ์๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋๋ฉด
if
๋ฌธ์ ์์ ํด์ผ ํจ - ์กฐ๊ฑด์ด ๋ง์์ง์๋ก ์ฝ๋๊ฐ ๋ณต์กํด์ง
๋คํ์ฑ์ ์ฌ์ฉํ ์์ (์ ์ง๋ณด์์ฑ ๋์)
// ๋ถ๋ชจ ํด๋์ค - ์ฐ์ฐ์
abstract class Operator {
abstract int calculate(int a, int b);
}
// ์์ ํด๋์ค - ๋ง์
class Addition extends Operator {
int calculate(int a, int b) {
return a + b;
}
}
// ์์ ํด๋์ค - ๋บ์
class Subtraction extends Operator {
int calculate(int a, int b) {
return a - b;
}
}
// ๋ฉ์ธ ๋ฉ์๋
public class Main {
public static void main(String[] args) {
Operator op = new Addition();
System.out.println(op.calculate(10, 5)); // ์ถ๋ ฅ: 15
op = new Subtraction();
System.out.println(op.calculate(10, 5)); // ์ถ๋ ฅ: 5
}
}
- ์ฐ์ฐ์๊ฐ ์ถ๊ฐ๋๋๋ผ๋ ํด๋์ค๋ง ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
if
๋ฌธ์ ์์ ํ์ง ์๊ณ ํ์ฅํ ์ ์์ต๋๋ค.- ๋คํ์ฑ ๋๋ถ์ ์ ์ง๋ณด์์ฑ์ด ๋์์ง๊ณ ๊ฐ๋ ์ฑ๋ ์ข์์ง๋๋ค.
5. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- *๋คํ์ฑ(Polymorphism)์ **
if
๋ฌธ ์์ด ๊ฐ ํด๋์ค๊ฐ ํ๋์ ์ ์ - ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋์์ง๋๋ค.
- ์กฐ๊ฑด์ด ๋ง๊ณ ๋ณต์กํ ๊ฒฝ์ฐ์๋ ๋คํ์ฑ์ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ๊น๋ํด์ง
- ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ํด๋์ค๋ง ์ถ๊ฐ
- ๊ฐ๋ ์ฑ์ด ์ข์์ง๊ณ ์ฝ๋๊ฐ ์ ์ฐํด์ง
โก 6๋จ๊ณ ๋ณธ๋ฌธ: Short-Circuiting (๋จ์ถ ํ๊ฐ)์ ๋ ผ๋ฆฌ ์ฐ์ฐ์
1. Short-Circuiting(๋จ์ถ ํ๊ฐ)๋?
- *Short-Circuiting(๋จ์ถ ํ๊ฐ)๋ **๋
ผ๋ฆฌ ์ฐ์ฐ์(
&&
,||
)์์ ์ผ์ชฝ ์กฐ๊ฑด๋ง์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ๊ฒฐ์ ๋๋ฉด - ์ค๋ฅธ์ชฝ ์กฐ๊ฑด์ ํ๊ฐํ์ง ์๋ ์ต์ ํ ๊ธฐ๋ฒ์ ๋๋ค.
- ๋ถํ์ํ ์ฐ์ฐ์ ์๋ตํ์ฌ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค.
- ์ฝ๋๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
์์: &&
์ฐ์ฐ์์ Short-Circuiting
int num = 10;
if (num > 0 && num < 5) {
System.out.println("0๋ณด๋ค ํฌ๊ณ 5๋ณด๋ค ์์ต๋๋ค.");
}
num > 0
์ด ์ฐธ(true)์ด๋ฉด ๋ ๋ฒ์งธ ์กฐ๊ฑด์ ๊ฒ์ฌํฉ๋๋ค.num > 0
์ด ๊ฑฐ์ง(false)์ด๋ฉด&&
ํน์ฑ์ ์ ์ฒด๊ฐ ๊ฑฐ์ง์ด๋ฏ๋กnum < 5
๋ ๊ฒ์ฌํ์ง ์๊ณ ๊ฑด๋๋๋๋ค.- ๋ถํ์ํ ์ฐ์ฐ์ ์๋ตํด์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
๐น ๋น์ : ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ํต๊ณผํ์ง ๋ชปํ๋ฉด ๋ค์ ๋ฌธ์ ์ด์ง ์์
- ์ฒซ ๋ฒ์งธ ๋ฌธ์ ํต๊ณผํด์ผ ๋ ๋ฒ์งธ ๋ฌธ์ผ๋ก ๊ฐ ์ ์์
- ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ๋งํ๋ฉด ๋ ๋ฒ์งธ ๋ฌธ์ ์ด๋ฆฌ์ง ์์
- ํ์ ์๋ ๋ฌธ ๊ฒ์ฌ๋ฅผ ์๋ตํด์ ์๊ฐ์ ์ ์ฝ
์์: ||
์ฐ์ฐ์์ Short-Circuiting
int num = 10;
if (num > 20 || num < 15) {
System.out.println("20๋ณด๋ค ํฌ๊ฑฐ๋ 15๋ณด๋ค ์์ต๋๋ค.");
}
num > 20
์ด ๊ฑฐ์ง(false)์ด๋ฉด ๋ ๋ฒ์งธ ์กฐ๊ฑด์ ๊ฒ์ฌํฉ๋๋ค.num > 20
์ด ์ฐธ(true)์ด๋ฉด||
ํน์ฑ์ ์ ์ฒด๊ฐ ์ฐธ์ด๋ฏ๋กnum < 15
๋ ๊ฒ์ฌํ์ง ์๊ณ ๊ฑด๋๋๋๋ค.- ๋ถํ์ํ ์ฐ์ฐ์ ์๋ตํด์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
๐น ๋น์ : ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ํต๊ณผํ๋ฉด ๋ ๋ฒ์งธ ๋ฌธ์ ์ด ํ์ ์์
- ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ํต๊ณผํ๋ฉด ๋ฐ๋ก ์ ์ฅ
- ๋ ๋ฒ์งธ ๋ฌธ์ ์ด์ง ์์
- ํ์ ์๋ ๋ฌธ ๊ฒ์ฌ๋ฅผ ์๋ตํด์ ์๊ฐ์ ์ ์ฝ
2. ๋ ผ๋ฆฌ ์ฐ์ฐ์์ ํน์ง ์์ฝ
์ฐ์ฐ์ | ์ค๋ช | Short-Circuiting | ์์ |
---|---|---|---|
&& (AND) |
๋ชจ๋ ์ฐธ์ผ ๋๋ง ์ฐธ | ์ผ์ชฝ์ด ๊ฑฐ์ง์ด๋ฉด ์ค๋ฅธ์ชฝ ์๋ต | a > 0 && b > 0 |
|| (OR) |
๋์ค ํ๋๋ผ๋ ์ฐธ์ด๋ฉด ์ฐธ | ` (OR)** | a > 0 || b > 0 |
! (NOT) |
์ฐธ โ ๊ฑฐ์ง, ๊ฑฐ์ง โ ์ฐธ | ์์ | !(a > 0) |
๋ ผ๋ฆฌ ์ฐ์ฐ์์ ํ๊ฐ ์์
- ์๋ฐ๋ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ์์๋ก ์กฐ๊ฑด์ ๊ฒ์ฌํฉ๋๋ค.
- Short-Circuiting์ ์ผ์ชฝ ์กฐ๊ฑด๋ง์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ๊ฒฐ์ ๋๋ฉด
- ์ค๋ฅธ์ชฝ ์กฐ๊ฑด์ ๊ฒ์ฌํ์ง ์์ต๋๋ค.
์์: ์์์ ๋ฐ๋ฅธ Short-Circuiting
int num = 10;
if (num > 0 && num++ < 20) {
System.out.println("์กฐ๊ฑด์ด ์ฐธ์
๋๋ค.");
}
System.out.println(num); // ์ถ๋ ฅ: 11
num > 0
์ด ์ฐธ์ด๋ฏ๋ก *num++ < 20
๋ ๊ฒ์ฌํฉ๋๋ค.num++
์ด ์คํ๋์ดnum
์ด 11๋ก ์ฆ๊ฐํฉ๋๋ค.
int num = -10;
if (num > 0 && num++ < 20) {
System.out.println("์กฐ๊ฑด์ด ์ฐธ์
๋๋ค.");
}
System.out.println(num); // ์ถ๋ ฅ: -10
num > 0
์ด ๊ฑฐ์ง์ด๋ฏ๋ก Short-Circuiting ๋ฐ์num++ < 20
๋ ๊ฒ์ฌํ์ง ์๊ณ ๊ฑด๋๋๋๋ค.- ๋ฐ๋ผ์
num
์ ๊ทธ๋๋ก -10์ ๋๋ค.
๐น ๋น์ : ์ฒซ ๋ฒ์งธ ๋ฌธ์ด ์ ๊ฒจ ์์ผ๋ฉด ๋ ๋ฒ์งธ ๋ฌธ์ ์ด์ง ์์
- ์ฒซ ๋ฒ์งธ ๋ฌธ์ ์ด์ง ๋ชปํ๋ฉด
- ๋ ๋ฒ์งธ ๋ฌธ์ ํ์ธํ์ง๋ ์์
- ํ์ ์๋ ํ๋์ ์๋ตํด์ ์๊ฐ์ ์ ์ฝ
3. Short-Circuiting์ผ๋ก ์ฝ๋ ์ต์ ํํ๊ธฐ
if
๋ฌธ ์์์ NullPointerException์ ๋ฐฉ์งํ ๋ ์ ์ฉํฉ๋๋ค.&&
์ฐ์ฐ์์ Short-Circuiting์ ํ์ฉํ๋ฉด- ์ผ์ชฝ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋ ์ค๋ฅธ์ชฝ ์กฐ๊ฑด์ ๊ฒ์ฌํ์ง ์์์ ์ด์ฉํฉ๋๋ค.
์์: NullPointerException ๋ฐฉ์ง
String str = null;
if (str != null && str.length() > 0) {
System.out.println("๋ฌธ์์ด ๊ธธ์ด: " + str.length());
}
str
์ดnull
์ผ ๋str.length()
๋ฅผ ํธ์ถํ๋ฉด NullPointerException ๋ฐ์- ๊ทธ๋ฌ๋
str != null
์ด ๊ฑฐ์ง์ด๋ฏ๋ก - Short-Circuiting์ด ๋ฐ์ํ๊ณ
str.length()
๋ ๊ฒ์ฌํ์ง ์์ - NullPointerException ์์ด ์์ ํ๊ฒ ์คํ๋ฉ๋๋ค.
๐น ๋น์ : ๋ฌธ์ด ๋ซํ ์์ผ๋ฉด ์์ชฝ ๋ฐฉ์ ๋ณด์ง ์์
- ์ฒซ ๋ฒ์งธ ๋ฌธ์ด ๋ซํ ์์ผ๋ฉด
- ์์ชฝ ๋ฐฉ์ ํ์ธํ์ง ์์
- ์์ ์ ํ์ธํ๊ณ ํ๋ํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์
4. Short-Circuiting์ ์ฃผ์์
- Short-Circuiting์ ์ผ์ชฝ ์กฐ๊ฑด๋ง์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ๊ฒฐ์ ๋๋ฉด
- ์ค๋ฅธ์ชฝ ์กฐ๊ฑด์ ๊ฒ์ฌํ์ง ์๊ธฐ ๋๋ฌธ์
- ์ค๋ฅธ์ชฝ ์กฐ๊ฑด์ ์ค์ํ ๋ก์ง์ด ์์ ๋๋ ์ฌ์ฉํ๋ฉด ์ ๋ฉ๋๋ค.
์์: Short-Circuiting์ ์ฃผ์์
int num = 10;
if (num > 20 && ++num < 15) {
System.out.println("์กฐ๊ฑด์ด ์ฐธ์
๋๋ค.");
}
System.out.println(num); // ์ถ๋ ฅ: 10
num > 20
์ด ๊ฑฐ์ง์ด๋ฏ๋ก- Short-Circuiting์ด ๋ฐ์ํ๊ณ
++num < 15
๋ ์คํ๋์ง ์์ - ๋ฐ๋ผ์
num
์ 11๋ก ์ฆ๊ฐํ์ง ์๊ณ ๊ทธ๋๋ก 10์ ๋๋ค. - ์ค๋ฅธ์ชฝ ์กฐ๊ฑด์ ์ค์ํ ๋ก์ง(
++num
)์ด ์๋ค๋ฉด - Short-Circuiting ๋๋ฌธ์ ์คํ๋์ง ์์ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.
5. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- Short-Circuiting(๋จ์ถ ํ๊ฐ):
&&
: ์ผ์ชฝ์ด ๊ฑฐ์ง์ด๋ฉด ์ค๋ฅธ์ชฝ ์๋ต||
: ์ผ์ชฝ์ด ์ฐธ์ด๋ฉด ์ค๋ฅธ์ชฝ ์๋ต
- ๋ถํ์ํ ์ฐ์ฐ ์๋ต โ ์ฑ๋ฅ ์ต์ ํ
- NullPointerException ๋ฐฉ์ง์ ์ ์ฉ
- ์ค๋ฅธ์ชฝ ์กฐ๊ฑด์ ์ค์ํ ๋ก์ง์ด ์์ ๋๋ ์ฌ์ฉํ์ง ๋ง ๊ฒ
- ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ์์๋ก ํ๊ฐ๋จ
๐ 7๋จ๊ณ ๋ณธ๋ฌธ: ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ - ์๋ฐ if
๋ฌธ ์ต์ ํ
1. ์์ฃผ ๋ฐ์ํ๋ ์กฐ๊ฑด์ ๋จผ์ ๋ฐฐ์นํ๊ธฐ
if-else
๋ฌธ์ ์์์ ์๋๋ก ์์๋๋ก ์กฐ๊ฑด์ ๊ฒ์ฌํฉ๋๋ค.- ์์ฃผ ๋ฐ์ํ๋ ์กฐ๊ฑด์ ๋จผ์ ๋ฐฐ์นํ๋ฉด ๋ถํ์ํ ์กฐ๊ฑด ๊ฒ์ฌ๋ฅผ ์ค์ฌ์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
- ๊ฑฐ์ ๋ฐ์ํ์ง ์๋ ์กฐ๊ฑด์ ๋ค์ชฝ์ ๋ฐฐ์นํฉ๋๋ค.
์์: ์์ฃผ ๋ฐ์ํ๋ ์กฐ๊ฑด์ ๋จผ์ ๋ฐฐ์น
int num = 1;
if (num == 1) {
System.out.println("์ซ์๋ 1์
๋๋ค.");
} else if (num == 2) {
System.out.println("์ซ์๋ 2์
๋๋ค.");
} else if (num == 3) {
System.out.println("์ซ์๋ 3์
๋๋ค.");
}
num
์ด1
์ผ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ฉด ๋งจ ์์ ๋ฐฐ์นํฉ๋๋ค.- ์ฒซ ๋ฒ์งธ ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ๋๋จธ์ง ์กฐ๊ฑด์ ๊ฒ์ฌํ์ง ์์
- ์ฐ์ฐ ํ์๋ฅผ ์ค์ฌ์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
๐น ๋น์ : ์ถ์ ๋ฌธ ๊ฒ์ฌ
- ์ฌ๋์ด ์์ฃผ ์ถ์ ํ๋ ๋ฌธ์ ๊ฐ์ฅ ๋จผ์ ๊ฒ์ฌํ๋ฉด ๋๊ธฐ ์๊ฐ์ด ์ค์ด๋ฆ
- ์์ฃผ ์ถ์ ํ์ง ์๋ ๋ฌธ์ ๋์ค์ ๊ฒ์ฌํด๋ ํจ์จ์ ์
2. switch
๋ฌธ์ผ๋ก ์ต์ ํํ๊ธฐ
- ์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฑด์ ๊ฒ์ฌํ ๋๋
switch
๋ฌธ์ด ์ฑ๋ฅ์ด ๋ ์ข์ ์ ์์ต๋๋ค. switch
๋ฌธ์ Jump Table์ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ๋ถ๊ธฐํฉ๋๋ค.- ํนํ ์ ์, ๋ฌธ์์ด, enum ๊ฐ์ ๊ณ ์ ๋ ๊ฐ์ ๋น๊ตํ ๋ ์ ๋ฆฌํฉ๋๋ค.
์์: switch
๋ฌธ์ผ๋ก ์ต์ ํ
String fruit = "์ฌ๊ณผ";
switch (fruit) {
case "์ฌ๊ณผ" -> System.out.println("์ฌ๊ณผ์
๋๋ค.");
case "๋ฐ๋๋" -> System.out.println("๋ฐ๋๋์
๋๋ค.");
case "๋ธ๊ธฐ" -> System.out.println("๋ธ๊ธฐ์
๋๋ค.");
default -> System.out.println("์ ์ ์๋ ๊ณผ์ผ์
๋๋ค.");
}
switch
๋ฌธ์ Jump Table์ ์ฌ์ฉํ์ฌ ํด๋น ์ผ์ด์ค๋ก ๋ฐ๋ก ์ด๋- ์กฐ๊ฑด์ ์์๋๋ก ๊ฒ์ฌํ์ง ์๊ณ , ํด๋น ์ผ์ด์ค๋ก ๋น ๋ฅด๊ฒ ์ด๋
- ์ฑ๋ฅ์ด ํฅ์๋๊ณ ๊ฐ๋ ์ฑ๋ ์ข์์ง
๐น ๋น์ : ์๋ฆฌ๋ฒ ์ดํฐ ๋ฒํผ
switch
๋ ์๋ฆฌ๋ฒ ์ดํฐ ๋ฒํผ์ฒ๋ผ- ๋๋ฆฐ ์ธต(3์ธต)์ผ๋ก ๋ฐ๋ก ์ด๋
- ์ค๊ฐ ์ธต์ ๊ฑฐ์น์ง ์์
3. ์ค์ฒฉ if
๋ฌธ ์ต์ํํ๊ธฐ
- ์ค์ฒฉ
if
๋ฌธ์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ณ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐํฉ๋๋ค. - *๋
ผ๋ฆฌ ์ฐ์ฐ์(
&&
,||
)๋ฅผ ์ฌ์ฉํ๋ฉด **ํ ์ค๋ก ํํํ ์ ์์ต๋๋ค. - ์ค์ฒฉ์ ์ค์ฌ์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ์ฑ๋ฅ๋ ์ต์ ํ๋ฉ๋๋ค.
์์: ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ก ์ค์ฒฉ ์ค์ด๊ธฐ
int age = 20;
boolean hasTicket = true;
if (age >= 18 && hasTicket) {
System.out.println("์ํ๊ด ์
์ฅ ๊ฐ๋ฅํฉ๋๋ค.");
}
&&
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ํ ์ค๋ก ํํ- ์ค์ฒฉ
if
๋ฌธ๋ณด๋ค ์ฝ๊ธฐ ์ฝ๊ณ ๊ฐ๊ฒฐํฉ๋๋ค.
๐น ๋น์ : ํ ๋ฒ์ ๋ ๊ฐ์ง ํ์ธ
- ํ ๊ฒ์ฌ๊ธฐ๊ฐ ๋์ด์ ํ๋ฅผ ํ ๋ฒ์ ๊ฒ์ฌ
- ๋ ๊ฐ์ ๋ฌธ์ ์ด ํ์ ์์ด ํ ๋ฒ์ ์ ์ฅ
4. ๋คํ์ฑ(Polymorphism)์ผ๋ก ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ ๋์ด๊ธฐ
- ์กฐ๊ฑด๋ฌธ์ด ๋ง๊ฑฐ๋ ํ์ฅ ๊ฐ๋ฅ์ฑ์ด ํฐ ๊ฒฝ์ฐ์๋
- *๊ฐ์ฒด ์งํฅ ์ค๊ณ(OOP)์์ **๋คํ์ฑ(Polymorphism)์ ์ฌ์ฉํฉ๋๋ค.
if
๋ฌธ ์์ด ๊ฐ ํด๋์ค์ ๊ฐ๋ณ ํ๋์ ์ ์ํ๋ฉด,- ์ ์ง๋ณด์์ฑ์ด ๋์์ง๊ณ ํ์ฅํ๊ธฐ ์ฌ์์ง๋๋ค.
์์: ๋คํ์ฑ์ผ๋ก if
๋ฌธ ์ ๊ฑฐ
abstract class Animal {
abstract void makeSound();
}
class Dog extends Animal {
void makeSound() { System.out.println("๋ฉ๋ฉ"); }
}
class Cat extends Animal {
void makeSound() { System.out.println("์ผ์น"); }
}
Animal pet = new Dog();
pet.makeSound(); // ์ถ๋ ฅ: ๋ฉ๋ฉ
if
๋ฌธ ์์ด ๊ฐ ํด๋์ค๊ฐ ์์์ ํ๋ํฉ๋๋ค.- ์๋ก์ด ๋๋ฌผ์ด ์๊ฒจ๋ ํด๋์ค๋ง ์ถ๊ฐํ๋ฉด ๋๋ฏ๋ก ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋์ต๋๋ค.
๐น ๋น์ : ์ ๊ธฐ ์ฐ์ฃผํ๊ธฐ
Animal
์ ์ ๊ธฐ์ด๊ณ ,Dog
์Cat
์ ๊ธฐํ์ ํผ์๋ ธ- *๊ฐ ์ ๊ธฐ(ํด๋์ค)๊ฐ **๊ฐ์์ ์๋ฆฌ(๋ฉ์๋)๋ฅผ ๋
- *์งํ์(
if
๋ฌธ)๊ฐ **์ผ์ผ์ด ์ง์ํ์ง ์์๋ - ๊ฐ ์ ๊ธฐ๊ฐ ์์์ ์๋ฆฌ๋ฅผ ๋
5. Short-Circuiting(๋จ์ถ ํ๊ฐ)๋ก ์ฑ๋ฅ ์ต์ ํ
&&
์||
์ฐ์ฐ์๋ ์ผ์ชฝ ์กฐ๊ฑด๋ง์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ๊ฒฐ์ ๋๋ฉด- ์ค๋ฅธ์ชฝ ์กฐ๊ฑด์ ํ๊ฐํ์ง ์์ต๋๋ค.
- ๋ถํ์ํ ์ฐ์ฐ์ ์๋ตํ์ฌ ์ฑ๋ฅ ํฅ์๋ฉ๋๋ค.
์์: Short-Circuiting(๋จ์ถ ํ๊ฐ)
String str = null;
if (str != null && str.length() > 0) {
System.out.println("๋ฌธ์์ด ๊ธธ์ด: " + str.length());
}
str
์ดnull
์ผ ๋str.length()
๋ฅผ ํธ์ถํ๋ฉด NullPointerException ๋ฐ์- ๊ทธ๋ฌ๋
str != null
์ด ๊ฑฐ์ง์ด๋ฏ๋ก - Short-Circuiting์ด ๋ฐ์ํ๊ณ
str.length()
๋ ๊ฒ์ฌํ์ง ์์ - NullPointerException ์์ด ์์ ํ๊ฒ ์คํ๋ฉ๋๋ค.
๐น ๋น์ : ๋ฌธ์ด ๋ซํ ์์ผ๋ฉด ์์ชฝ ๋ฐฉ์ ๋ณด์ง ์์
- ์ฒซ ๋ฒ์งธ ๋ฌธ์ด ๋ซํ ์์ผ๋ฉด
- ์์ชฝ ๋ฐฉ์ ํ์ธํ์ง ์์
- ์์ ์ ํ์ธํ๊ณ ํ๋ํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์
6. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- ์์ฃผ ๋ฐ์ํ๋ ์กฐ๊ฑด์ ๋จผ์ ๋ฐฐ์นํ์ฌ ์ฑ๋ฅ ์ต์ ํ
switch
๋ฌธ์ Jump Table์ ์ฌ์ฉํ์ฌ ๋ค์ค ์กฐ๊ฑด ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ- ์ค์ฒฉ
if
๋ฌธ ์ต์ํ: ๋ ผ๋ฆฌ ์ฐ์ฐ์(&&
,||
)๋ก ๋จ์ํ - ๋คํ์ฑ ์ ์ฉ: ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ ํฅ์
- Short-Circuiting: ๋ถํ์ํ ์ฐ์ฐ ์๋ต์ผ๋ก ์ฑ๋ฅ ์ต์ ํ