![]() |
Call by Value, Call by Reference Call by Value, Call by Reference Call by Value, Call by Reference
※Java에서는 배열도 객체로 관리되며 reference가 가능함.
예
class tSwap
{
public static void main(String arg0[])
{
tSwap ts = new tSwap();
int v1 = 100;
int v2 = 200;
System.out.println("before :"+v1+" , "+v2);
ts.swap(v1, v2);
System.out.println("after :"+v1+" , "+v2);
}
public void swap(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;
}
}
아쉽게도 위코드는 넘겨지는 인자가 기본형이므로 call by value, 값만 복사되어
결코 두값은 swap메서드를 통해서 교환이 되지 않는다.
값을 교환하기위해서는 call by reference가 가능한 객체로 인자값을 만들어줘야 한다.
class tSwap
{
public static void main(String arg0[])
{
tSwap ts = new tSwap();
myInt v1 = new myInt();
v1.value =100;
myInt v2 = new myInt();
v2.value = 200;
System.out.println("before :"+v1.value+" , "+v2.value);
ts.swap(v1, v2);
System.out.println("after :"+v1.value+" , "+v2.value);
}
public void swap(myInt a, myInt b) {
myInt temp=new myInt();
temp.value = a.value;
a.value = b.value;
b.value = temp.value;
}
}
class myInt
{
public int value;
};
자바는 오직 객체에서만 call by reference가 일어나므로 다소 복잡해 보이고 웬지 억지스런 코드지만
단순히 보여주기위한 예제일뿐임을 고려하시기 바랍니다.