Laboratory/Develop

call by value, call by reference

theking 2007. 6. 14. 19:24

call by value, call by reference

call by value

메소드 호출시 데이터 값만 넘겨주어, 전달받은 데이터를 변경하더라도, 원본 데이터에 변경이 없는 메소드 호출 방법

예제)))))))))))))))


void a() {
      int x = 10;
      b(x);
}

void b(int y) {
      y = 20;
}
=> x = 10, y = 20



call by reference
메소드 호출시 오브젝트 데이터의 주소값을 넘겨주어, 오브젝트의 맴버변수를 수정하는 메소드 호출 방법.
오브젝트 자체를 수정할 수 없습니다.

예제)))))))))))))))

class DemoObject {

       int t;

       DemoObject(int i) {
             t = i;
       }

       static void compare(int[] temp, DemoObject s) {
             temp[0]++;
             temp[1]++;
             s.t = 12;
       }
}
class CallByRef {
       public static void main(String[] arg) {

             int[] temp = {4, 1};


             DemoObject d = new DemoObject(6);


             System.out.println(temp[0]+" "+temp[1]+", "+d.t);
             DemoObject.compare(temp, d);
             System.out.println(temp[0]+" "+temp[1]+", "+d.t);
       }
}

C:\java\ch2>java CallByRef

*********** 결과 



              4 1, 6
              5 2, 12