Java๋ Call by Value
class CallByTest {
int memberVar = 10;
static void change1(int var) {
var += 10;
System.out.printf("change1 : %d\\n", var);
}
static void change2(CallByTest cbt1) {
cbt1.memberVar += 100;
System.out.printf("change2 : %d\\n", cbt1.memberVar);
}
public static void main(String[] args) {
CallByTest cbt = new CallByTest(); // ๊ฐ์ฒด ์์ฑ
cbt.memberVar = 5; // ๊ฐ ์ค์
System.out.printf("change1 ํธ์ถ ์ memberVar : %d\n", cbt.memberVar); // 5
change1(cbt.memberVar); // ๊ธฐ๋ณธํ(๊ฐ ์ ๋ฌ)
System.out.printf("change1 ํธ์ถ ํ memberVar : %d\n", cbt.memberVar); // ์ฌ์ ํ 5
change2(cbt); // ์ฐธ์กฐํ(์ฃผ์๊ฐ ์ ๋ฌ)
System.out.printf("change2 ํธ์ถ ํ memberVar : %d\n", cbt.memberVar); // 105
}
}
- ๊ธฐ๋ณธํ: ๊ฐ์ด ๋ณต์ฌ๋๋ฏ๋ก, ์๋ณธ์ ์ํฅ ์์
- ์ฐธ์กฐํ: ์ฃผ์๊ฐ์ด ๋ณต์ฌ๋๋ฏ๋ก, ๊ฐ์ ๊ฐ์ฒด์ ์ ๊ทผ ๊ฐ๋ฅ → ์๋ณธ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- Java๋ ํญ์ Call by Value, ํ์ง๋ง ์ฐธ์กฐํ์ value๊ฐ '์ฃผ์'์ด๊ธฐ ๋๋ฌธ์ ํผ๋ ๋ฐ์