[Java] ์๋ฐ์ ํ๋ผ๋ฏธํฐ
๐ ํ๋ผ๋ฏธํฐ๋?
ํ๋ผ๋ฏธํฐ๋ ๋ฉ์๋ ์๊ทธ๋์ฒ ๋ง์ง๋ง ๊ดํธ ์์ ๋ค์ด๊ฐ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์๋ฏธํ๋ค. ํ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํ๋ฉด ๋ฉ์๋ ๋ด์์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์จ ๋งค๊ฐ๋ณ์์ ๋ํ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ณ , ์ดํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์๋ค.
public class Parameter {
public static void main(String[] args) {
System.out.println(parameterMethod(10, "30"));
}
public static int parameterMethod(int i, String s) {
return i + Integer.parseInt(s);
}
}
parameterMethod๋ intํ ๋งค๊ฐ๋ณ์ i์ ์ซ์๋ก ๋ฐ์ Stringํ s๋ฅผ ๋ํ ๊ฐ์ returnํ๋ ๋ฉ์๋์ด๋ค. ๊ฐ๋จํ ๋ฉ์๋๋ฅผ ๊ตฌํํ ๊ฑฐ๋ผ ํฌ๊ฒ ์๋ฟ์ง๋ ์์ง๋ง, ๋งค๊ฐ๋ณ์์ ๋ฐฐ์ด ํน์ ๊ฐ์ฒด๊ฐ ๋ค์ด๊ฐ๋ค๋ฉด ํด๋น ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ๊ตฌํ๋์ด ์๋ ๋ฉ์๋๋ฅผ ๋ณ๋์ ๊ฐ์ฒด ์์ฑ ์์ด ํด๋น ๋ฉ์๋ ๋ด์์ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ ์ด์ ๋ ๋งค๊ฐ๋ณ์ ์์ฒด๊ฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๊ฒ๊ณผ ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ์๋ฐ์ ํ๋ผ๋ฏธํฐ ์ ๋ฌ ๋ฐฉ์
๊ฐ์ ์ ๋ฌํ๋ ๋ฐฉ์์๋ 2๊ฐ์ง๊ฐ ์๋ค. Pass by Value, Pass by Reference๊ฐ ๊ทธ๊ฒ์ด๋ค. ์ง์ญํ๋ฉด ๊ฐ์ ์ํ ํต๊ณผ, ์ฐธ์กฐ์ ์ํ ํต๊ณผ์ธ๋ฐ, ์ฝ๊ฒ ๋งํ๋ฉด ๊ฐ๊ฐ ๊ฐ์ ์ง์ ์ ๋ฌํ๋ ๋ฐฉ์๊ณผ ์ฃผ์๊ฐ์ ์ ๋ฌํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค.
๊ฐ์ ์ ๋ฌํ๋ ๋ฐฉ์์ ํด๋น ๊ฐ์ ๋ณต์ฌํด์ ์ ๋ฌํ๋ ๊ฒ์ธ๋ฐ, ์ด๋ ๋ณต์ฌํ ๊ฐ์ ์์ ํ๋ค๊ณ ํด์ ์๋ณธ ๊ฐ์ด ์์ ๋์ง ์๋ ๊ฒ์ ์๋ฏธํ๋ค. ๊ทธ๋ฌ๋ ์ฃผ์๊ฐ์ ์ ๋ฌํ๋ ๋ฐฉ์์ ๊ฐ์ ๋ณต์ฌํ๋ ๊ฒ์ด ์๋ ๊ฐ์ด ์์นํ ์ฅ์๋ฅผ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์, ์ ๋ฌ๋ฐ์ ๊ฐ์ ์์ ํ๋ฉด ์๋ณธ ๊ฐ์ด ์์ ๋๋ค. ์ด์ค ์๋ฐ์ ํ๋ผ๋ฏธํฐ ์ ๋ฌ ๋ฐฉ์์ ๋ชจ๋ Pass by Value์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๊ฐ์ ํด๋น ๋ฉ์๋ ๋ด์์ ์์ ํ๋ค๊ณ ํด์, ์ค์ ์๋ณธ ๋ฐ์ดํฐ ๊ฐ์ ์ํฅ์ ์ฃผ์ง๋ ๋ชปํ๋ค. ๊ทธ๋์ "ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๊ฐ์ ์์ ํ๋๋ฐ ์ ์ ๋ฐ๋์์ง?"๋ผ๊ณ ์๊ฐํ๋ ๋ถ์ด ๊ณ์๋ค๋ฉด ์๋ฐ์ ํ๋ผ๋ฏธํฐ์ ๋ํด์ ํ ๋ฒ ๋ ์ดํด๋ณผ ํ์๊ฐ ์๋ค.
Pass by Reference๋ก ๋์ํ๋ ์ธ์ด๋ ๋ง์ด ์กด์ฌํ๋๋ฐ, ๊ทธ ์ค ๋ํ์ ์ธ ์ธ์ด๋ C#์ด๋ค. Java์ ํจ๊ป ๋ํ์ ์ธ ๊ฐ์ฒด์งํฅ ์ธ์ด์ธ๋ฐ C#์ ๋ชจ๋ ๊ฐ์ด Pass by Reference๋ก ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ ๋ณต์ฌ๋ ๊ฐ์ ์์ ํ๋ฉด ์๋ณธ ๊ฐ์ด ๋ณํ๊ฒ ๋๋ค. ์ด๋ณด๋ค ๋ ๊ตฌ์ฒด์ ์ธ ์ค๋ช ์ ์ํด์๋ ๊ทธ๋ฆผ์ด ๋๋ฌด ๋ง์ด ํ์ํ๊ธฐ ๋๋ฌธ์.. ์ฌ๊ธฐ์ ๋ง์น๋๋ก ํ๊ฒ ๋ค.๐