์ฐ๊ฒฐํ ์ ์๋ ์ฝ๋ ๋ฌธ์ Java ์ด๋ณด์ ์ฌ์ด์์ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์
๋๋ค. ๋ง์ ์ด๋ณด ๊ฐ๋ฐ์๊ฐ ์ด ์ค๋ฅ๋ฅผ ๋ ๋ค๋ฅธ Java ๊ด๋ จ ํ์์ธ "์ฃฝ์ ์ฝ๋"์ ํผ๋ํฉ๋๋ค. ์ด ๋์ ํํ์ ์ํด ๋น์ทํ์ง๋ง ์ด ๊ฒ์๋ฌผ์์ ๋ค๋ฃฐ ๋ช ๊ฐ์ง ์ฐจ์ด์ ์ด ์์ต๋๋ค. ๊ทธ ์ธ์ ์ปดํ์ผ๋ฌ๊ฐ ๋๋ฌํ ์ ์๋ ์ฝ๋ ๋ช
๋ น๋ฌธ์ ๋ฐํํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ด์ ๊ฐ ๋ฌด์์ธ์ง ์์๋ณด๊ณ ์ฝ๋๋ฅผ ๋ค์ ์์ํ๊ณ ์คํํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ฌ์ด ์์ ์ฌํญ์ ์ฐพ์ ์ ์์ต๋๋ค.
๋๋ฌํ ์ ์๋ ์ฝ๋๋ ๋ฌด์์ ๋๊น?
์ ์์ ๋ฐ๋ผ ๋๋ฌํ ์ ์๋ ๋ฌธ์ ๋ฐฐํฌ ์ค๋น๊ฐ ๋ ์ฝ๋๋ฅผ ์คํํ ๋ ์ปดํ์ผ๋ฌ์์ ์คํ๋์ง ์๋ ๋ฌธ์ ๋๋ค. ์ฐ๊ฒฐํ ์ ์๋ ์ฝ๋ ๋ฐํ ๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ ๋ด์ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ฅผ ๋ํ๋ด๋ ์ ํธ์ ๋๋ค. ์ด๋ฌํ ์ง์ ๋ก ๋๋๋ ๋ฐ์๋ ๋ช ๊ฐ์ง ์ด์ ๊ฐ ์์ง๋ง ๋ชจ๋ ๊ฒฝ์ฐ์ ๋๋ฌํ ์ ์๋ ์ฝ๋๋ ์ค๋ณต๋๊ณ ํ๋ก๊ทธ๋จ์ ์ด์ง๋ฝํ๋ฏ๋ก ์ด๋ค ๋๊ฐ๋ฅผ ์น๋ฅด๋๋ผ๋ ํผํด์ผ ํฉ๋๋ค.๋๋ฌํ ์ ์๋ ์ฝ๋์ ๋ฐ๋ ์ฝ๋
๊ฐ๋ฐ ์ปค๋ฎค๋ํฐ์์ "๋๋ฌํ ์ ์๋" ์ฝ๋์ "์ฃฝ์" ์ฝ๋์ ๊ฐ๋ ์ ์ค์ง์ ์ผ๋ก ๋์์ด์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์๋ฅผ ์ฝ์ ๋ ๊น๋ค๋กญ๋ค๋ฉด ๊ฐ๋ฐ ์ง์นจ์์ ์ข ์ข ๋ ๊ฐ์ง๋ฅผ ๋ณ๋๋ก ์ธ๊ธํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ฃฝ์ ์ฝ๋์ ๋๋ฌํ ์ ์๋ ์ฝ๋ ๊ฐ์ ์ฐจ์ด๊ฐ ์์ต๋๊น? ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ์ค๋ฅ์ ์ฐจ์ด์ ์ ์ปดํ์ผ๋ฌ๊ฐ ์ค๋ฅ์ ๋ฐ์ํ๋ ๋ฐฉ์์ ๋๋ค. ์ปดํ์ผ๋ฌ์ ์ ๋ ฅํ ์ฝ๋์ ๋๋ฌ ํ ์ ์๋ ๊ฒฝ์ฐ Java ์๋ฆผ์ ์ปดํ์ผ ๋ฐํ์ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค. ๋ฌธ์ด " ์ฃฝ์ ์ฝ๋ "์ธ ๊ฒฝ์ฐ ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ์์คํ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค.
class DeadCode {
void deadcode_Method(boolean b) {
System.out.println("Reachable statement");
if(true) {
return;
}
System.out.println("Unreachable statement"); // dead code
}
}
์ฃฝ์ ์ฝ๋์ ๊ฒฝ์ฐ ์ง์ ์ ์ธ ์ปดํ์ผ๋ฌ ์ค๋ฅ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์งํ๊ธฐ๊ฐ ๋ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ฌ๋ System.out.printIn ๋ฐํ์ ์ฃผ์ ๊น๊ฒ ์ถ์ ํ๋ฉด ์ฃฝ์ ์ฝ๋๋ฅผ ์ก์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
๋๋ฌํ ์ ์๋ ์ฝ๋ ๋ฌธ์ด ๋ํ๋๋ ์ด์
์ข์ ์์์ ๋๋ฌํ ์ ์๋ ์ฝ๋ ๋ฌธ์ ์ ์์ธ์ ์ฝ๊ฒ ์ถ์ ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ ๊ณ์ ์ค๋ฅ๋ฅผ ๋ฐํํ๋ ์ธ ๊ฐ์ง ์ฃผ์ ์ด์ ๊ฐ ์์ต๋๋ค.- ์๋ ๋ช ์ธ์. return ๋ฌธ์ผ๋ก ์ฝ๋๋ฅผ ์ค๋จํ๋ฉด "return = true" ์ดํ์๋ ์๋ฌด ๊ฒ๋ ์คํ๋์ง ์์ต๋๋ค.
- ๋ฌดํ ๋ฃจํ - ์์คํ ์ด ๋ฃจํ ์์ ์ ๊ณ์ ๋ฐ๋ณตํ๋ฏ๋ก ๋ฌดํ ๋ฃจํ ์ดํ์ ์์ฑํ ์ฝ๋๋ ์คํ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฝ๋๋ฅผ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํํ ๋ ์ปดํ์ผ๋ฌ๋ ์ฐ๊ฒฐํ ์ ์๋ ์ฝ๋ ์ค๋ฅ๋ฅผ ๋ณด๋ ๋๋ค.
๋ฐํ ๋ฌธ
return ๋ฌธ์ Transfer ํค์๋ ๊ทธ๋ฃน์ ์ผ๋ถ๋ก, ๋ฉ์๋๋ฅผ ์ข ๋ฃํ๋ค๋ ์๋ฏธ์ ๋๋ค. ํจ์๋ฅผ ๋ถ๋ฆฌํ๋ ๋ฐ ์ ์ฉํ๊ณ ์ฝ๋๋ฅผ ์ฝ๊ธฐ ์ฝ๊ณ ๊น๋ํ๊ฒ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ return = true ์ดํ์๋ ํจ์์ ์ ๋ฌธ์ ์ถ๊ฐํ ์ ์์ผ๋ฏ๋ก ํค์๋ ์ดํ์ ํจ์๋ฅผ ๊ณ์ํ๋ ค๊ณ ํ๋ฉด "์ฐ๊ฒฐํ ์ ์๋ ์ฝ๋" ์ปดํ์ผ๋ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. "return = true" ์๋ชป๋ ์ฒ๋ฆฌ์ ์์ ์ปดํ์ผ๋ฌ๊ฐ ์ด์ ๋ฐ์ํ๋ ๋ฐฉ์์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
class GFG {
public static void main(String args[])
{
System.out.println("My code will run");
return;
// ironically, this code will never run
// hereโs an unreachable code message a developer gets.
System.out.println("My code will run");
}
}
๋ฐํ ๋ฌธ ์ค์ฉ์ด ์ปดํ์ผ๋ฌ์ ํ์๋๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
prog.java:11: error: unreachable statement
System.out.println(โMy code will runโ);
^
1 error
๋ฐฐ์ด ๋ด์ฉ์ ๋ณด๊ฐํ๋ ค๋ฉด Java ๊ณผ์ ์์ ๋น๋์ค ๊ฐ์๋ฅผ ์์ฒญํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Break ๋ฌธ
Break ๋ฌธ์ Java ํจ์๋ฅผ ์์ฑํ ๋ ์ฃผ์ํด์ผ ํ๋ ๋ ๋ค๋ฅธ ์ ํ์ ํค์๋์ ๋๋ค. ์ ์์ ๋ฐ๋ฅด๋ฉด break ํค์๋๋ ๋ฃจํ๋ฅผ ์ข ๋ฃํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ ์์์ ๊ฐ๋ฐ์๊ฐ ๋ฃจํ๋ฅผ ์ข ๋ฃํ๋ฉด ๋ ์ด์ 8ํ์ ๋ช ๋ น๋ฌธ์ ์คํํ ์ ์์ผ๋ฏ๋ก ์ปดํ์ผ๋ฌ๋ ๋๋ฌํ ์ ์๋ ๋ช ๋ น๋ฌธ ์ค๋ฅ๋ฅผ ํ์ํฉ๋๋ค. ๋ค์์ ์ฐ๊ฒฐํ ์ ์๋ ์ฝ๋ ๋ฌธ์ ์์ฑํ๋ ์ํ ์ฝ๋์ ๋๋ค.
public class JavaCodeGeeks
{
public static void main(String[] args) {
for(int i=1;i<5;i++)
{
System.out.println(i);
break;
System.out.println("Code after break");
}
}
}
์ปดํ์ผ๋ฌ ๊ด์ ์์ ์ค๋ฅ๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ ๋ฌธ์ด ํ์๋ฉ๋๋ค.
JavaCodeGeeks.java:8: error: unreachable statement
System.out.println("After break");
^
1 error
๊ณ์ ์ง์
Continue๋ ์์ ์ ๋ฐ๋ณตํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฃจํ ์ ์ด ํค์๋์ ๋๋ค. ๋ฃจํ ์คํ์ ์ฒ์๋ถํฐ ์์ฒด์ ์ผ๋ก ์์ํ๋ ค๋ฉด ์ฝ๋์ continue๋ฅผ ์ถ๊ฐํ์ญ์์ค. ์ด ๋ช ๋ น๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ณตํ๋ ค๋ ๋ฃจํ์ ๋ช ๋ น๋ฌธ๊ณผ ๋ฐ๋ณต์ ๋ฃ์ง ์์ ๋ช ๋ น๋ฌธ์ ์ ํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. continue๋ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ํค์๋์ด์ง๋ง ์๋ ๋ฐฉ์์ ์์ ํ ์ดํดํ์ง ๋ชปํ๋ฉด ๊ฐ๋ฐ์๊ฐ "๋๋ฌํ ์ ์๋ ์ฝ๋" ํจ์ ์ ๋น ์ง๊ฒ ๋ฉ๋๋ค. continue๋ฅผ ๋ง๋ ํ ์์คํ ์ ๋ฃจํ๋ฅผ ๋ฐ๋ณตํ๋ฏ๋ก ํค์๋๋ ๋ค์ ์ค๋ ๋ช ๋ น๋ฌธ์ ๋๋ฌํ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์์ต๋๋ค.
public class JavaIsFun
{
public static void main(String[] args) {
for(int i=0;i<8;i++)
{
System.out.println(i);
if(i==5)
{
continue;
System.out.println("Coding after continue");
}
}
}
}
์์คํ
์ "Coding after continue" ๋ช
๋ น๋ฌธ์ ์คํํ์ง ์์ต๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ ์ด๋ฅผ ์ฆ์ ์๋ ค์ค๋๋ค.
JavaIsFun.java:10: error: unreachable statement
System.out.println("Coding after continue");
๋ฌดํ ๋ฃจํ
"์ค๋จ" ๋ฐ "๊ณ์" ํค์๋ ์ฌ์ฉ ์ฌ๋ก์ ์์ ์ ์ฌํ ์๋๋ฆฌ์ค๋ ๋ฌดํ ๋ฃจํ์ ์๋๋ฆฌ์ค์ ๋๋ค. ๋ฌดํ ๋ฃจํ๋ฅผ ์ค๊ณํ ๋ ๊ฐ๋ฐ์๋ ์คํ ํ ๋ช ๋ น๋ฌธ์ด ์๋ค๋ ์ ์ ๊ธฐ์ตํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฃจํ๋ฅผ ์ค๋จํ์ง ์์ผ๋ฉด ์ดํ์ ์์ฑ๋ ๋ชจ๋ ์ฝ๋์ ๋๋ฌํ ์ ์์ต๋๋ค. ๋ค์์ ํ์ธํด์ผ ํ ๋ฌดํ ๋ฃจํ ์๋ชป๋ ์ฒ๋ฆฌ์ ํฅ๋ฏธ๋ก์ด ์์ ๋๋ค.
public class JavaCodeGym
{
public static void main(String[] args) {
while(true)
{
System.out.println("Hey there");
}
System.out.println("Nice to see you");
}
}
์ค๋ฅ๊ฐ ์ด๋์ ์จ์ด ์๋์ง ์ถ์ธกํ ์ ์์ต๋๊น? ์ฝ๋๋ฅผ ์คํํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์ฆ์ ์ด๋ฅผ ๊ฐ๋ฆฌํฌ ๊ฒ์
๋๋ค.
//unreachable code statement compiler error
JavaCodeGym.java:10: error: unreachable statement
System.out.println("Nice to see you");
โ
"Nice to see you" ์ด์ ์ ๋ฌดํ ๋ฃจํ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ช
๋ น๋ฌธ์ ์คํ๋์ง ์๊ณ ๋๋ฌํ ์ ์๋ ์ฝ๋ ์ค๋ฅ๋ฅผ ๊ณ์ ๋ฐํํฉ๋๋ค.
GO TO FULL VERSION