이 게시물을..
2008.10.09 17:09:35 (*.168.200.99)
6333

 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가 일어나므로 다소 복잡해 보이고 웬지 억지스런 코드지만

단순히 보여주기위한 예제일뿐임을 고려하시기 바랍니다.

 

이 게시물을..
2008.10.08 16:20:37 (*.168.200.99)
1605
이 게시물을..
이 게시물을..
이 게시물을..